Dépôt ici
Mongogrator est une CLI de migration de base de données très rapide pour MongoDB. Son objectif est de créer et d'exécuter facilement des migrations pour les étapes de développement et de production
À l'aide de la commande suivante, il téléchargera, installera et ajoutera automatiquement Mongogrator à PATH
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
Un guide de base sur la façon d'utiliser la CLI
Commencez par initialiser le fichier de configuration
mongogrator init
Cela initialise un fichier mongogrator.config.ts à l'emplacement de la commande. Vous pouvez éventuellement passer un indicateur --js à la fin de la commande pour initialiser dans un fichier js
Configurez l'URL du cluster mongo souhaité et assurez-vous qu'il est en cours d'exécution
mongogrator add insert_user
Cela créera le fichier de migration sous la clé de répertoire attribuée dans la configuration migrationsPath
Ce qui suit est un exemple de fichier de migration ts nouvellement créé
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 }
Les migrations sont exécutées via le pilote natif MongoDB Node.js
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' }) }
Vous pouvez ajouter autant de migrations que vous le souhaitez puis appeler la commande list pour afficher le statut de chacune
mongogrator list
Cela imprimera une liste de toutes les migrations, chacune ayant un statut NON MIGRÉ ou MIGRÉ
┌───┬───────────────────────────────┬──────────────┐ │ │ migration │ status │ ├───┼───────────────────────────────┼──────────────┤ │ 0 │ 20240923150201806_insert_user │ NOT MIGRATED │ └───┴───────────────────────────────┴──────────────┘
Naturellement, le statut sera NON MIGRÉ car nous n'avons pas encore effectué la migration
Exécutez les migrations simplement en appelant
mongogrator migrate
Cela exécutera toutes les migrations et les enregistrera dans la base de données sous le nom de collection spécifié dans la configuration logsCollectionName
À des fins de production, vous pouvez transmettre directement le chemin de configuration à la commande migrate s'il n'est pas accessible sous le même chemin
mongogrator migrate /dist
Maintenant, si vous exécutez à nouveau la commande list, elle révélera que le fichier de migration a été exécuté avec succès
┌───┬───────────────────────────────┬──────────────┐ │ │ 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'] }
toutes les clés de configuration avec des valeurs de chemin sont relatives à l'emplacement du fichier de configuration lui-même
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!