Repository hier
Mongogrator ist eine sehr schnelle Datenbankmigrations-CLI für MongoDB. Sein Zweck besteht darin, Migrationen für Entwicklungs- und Produktionsphasen einfach zu erstellen und auszuführen
Mit dem folgenden Befehl wird Mongogrator automatisch heruntergeladen, installiert und zum PATH hinzugefügt
curl -fsSL git.new/mongogrator-installer.sh | bash
powershell -c "irm git.new/mongogrator-installer.ps1 | iex"
Mongogrator CLI Usage: mongogrator <command> [options] Commands: init [--js] Initialize a new configuration file add Creates a new migration file with the provided name list List all migrations and their status migrate [config_path] Run all migrations that have not been applied yet version, -v, --version Prints the current version of Mongogrator Flags: --help, -h Prints the detailed description of the command
Eine grundlegende Anleitung zur Verwendung der CLI
Beginnen Sie mit der Initialisierung der Konfigurationsdatei
mongogrator init
Dadurch wird eine mongogrator.config.ts-Datei am Speicherort des Befehls initialisiert. Sie können optional am Ende des Befehls ein Flag --js übergeben, um in einer js-Datei zu initialisieren
Richten Sie die URL auf den gewünschten Mongo-Cluster ein und stellen Sie sicher, dass er ausgeführt wird
mongogrator add insert_user
Dadurch wird die Migrationsdatei unter dem Verzeichnisschlüssel erstellt, der im Konfigurationspfad „migrationsPath“ zugewiesen ist
Das Folgende ist ein Beispiel einer neu erstellten TS-Migrationsdatei
import type { Db } from 'mongodb' /** * This function is called when the migration is run. * @param _db The mongodb database object that's passed to the migration */ export const migrate = async (_db: Db): Promise<void> => { // Migration code here }
Die Migrationen werden über den nativen MongoDB Node.js-Treiber ausgeführt
import type { Db } from 'mongodb' /** * This function is called when the migration is run. * @param _db The mongodb database object that's passed to the migration */ export const migrate = async (_db: Db): Promise<void> => { // Migration code here _db.collection('users').insertOne({ name: 'Alex' }) }
Sie können so viele Migrationen hinzufügen, wie Sie möchten, und dann den Listenbefehl aufrufen, um den Status jeder Migration anzuzeigen
mongogrator list
Dadurch wird eine Liste aller Migrationen ausgedruckt, jede hat den Status „NICHT MIGRIERT“ oder „MIGRIERT“
┌───┬───────────────────────────────┬──────────────┐ │ │ migration │ status │ ├───┼───────────────────────────────┼──────────────┤ │ 0 │ 20240923150201806_insert_user │ NOT MIGRATED │ └───┴───────────────────────────────┴──────────────┘
Natürlich lautet der Status NICHT MIGRIERT, da wir die Migration noch nicht durchgeführt haben
Führen Sie die Migrationen einfach per Anruf durch
mongogrator migrate
Dadurch werden alle Migrationen ausgeführt und in der Datenbank unter dem angegebenen Sammlungsnamen in der Konfiguration „logsCollectionName“ protokolliert
Für Produktionszwecke können Sie den Konfigurationspfad direkt an den Migrationsbefehl übergeben, wenn er nicht unter demselben Pfad zugänglich ist
mongogrator migrate /dist
Wenn Sie nun den Listenbefehl erneut ausführen, wird angezeigt, dass die Migrationsdatei erfolgreich ausgeführt wurde
┌───┬───────────────────────────────┬──────────────┐ │ │ migration │ status │ ├───┼───────────────────────────────┼──────────────┤ │ 0 │ 20240923150201806_insert_user │ MIGRATED │ └───┴───────────────────────────────┴──────────────┘
{ _id: objectId(), name: string, createdAt: Date(), }
{ url: 'mongodb://localhost:27017', // Cluster url database: 'test', // Database name for which the migrations will be executed migrationsPath: './migrations', // Migrations directory relative to the location of the commands logsCollectionName: 'migrations', // Name of the logs collection that will be stored in the database format: 'ts', // Format type of the migration files ['ts', 'js'] }
Alle Konfigurationsschlüssel mit Pfadwerten sind relativ zum Speicherort der Konfigurationsdatei selbst
Das obige ist der detaillierte Inhalt vonMongogrator – ein MongoDB-Migrationstool für TS und JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!