Maison > interface Web > js tutoriel > Mongogrator - un outil de migration MongoDB pour TS & JS

Mongogrator - un outil de migration MongoDB pour TS & JS

Barbara Streisand
Libérer: 2024-10-02 06:40:30
original
1020 Les gens l'ont consulté

Mongogrator - a MongoDB migration tool for TS & JS

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

Installation

À l'aide de la commande suivante, il téléchargera, installera et ajoutera automatiquement Mongogrator à PATH

MacOS/Linux

curl -fsSL git.new/mongogrator-installer.sh | bash
Copier après la connexion

Fenêtres

powershell -c "irm git.new/mongogrator-installer.ps1 | iex"
Copier après la connexion

Liste des commandes

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
Copier après la connexion

Guide d'utilisation

Un guide de base sur la façon d'utiliser la CLI

Ajouter de nouvelles migrations

Commencez par initialiser le fichier de configuration

mongogrator init
Copier après la connexion

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
Copier après la connexion

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
}
Copier après la connexion

Les migrations sont exécutées via le pilote natif MongoDB Node.js

Exemple de requête de migration

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' })
}
Copier après la connexion

Liste des migrations

Vous pouvez ajouter autant de migrations que vous le souhaitez puis appeler la commande list pour afficher le statut de chacune

mongogrator list
Copier après la connexion

Cela imprimera une liste de toutes les migrations, chacune ayant un statut NON MIGRÉ ou MIGRÉ

┌───┬───────────────────────────────┬──────────────┐
│   │ migration                     │ status       │
├───┼───────────────────────────────┼──────────────┤
│ 0 │ 20240923150201806_insert_user │ NOT MIGRATED │
└───┴───────────────────────────────┴──────────────┘
Copier après la connexion

Naturellement, le statut sera NON MIGRÉ car nous n'avons pas encore effectué la migration

Exécuter les migrations

Exécutez les migrations simplement en appelant

mongogrator migrate
Copier après la connexion

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
Copier après la connexion

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     │
└───┴───────────────────────────────┴──────────────┘
Copier après la connexion

Schéma de collecte des journaux

{
  _id: objectId(),
  name: string,
  createdAt: Date(),
}
Copier après la connexion

Configuration

{
  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']
}
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal