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

Mongogrator - un outil de migration MongoDB pour TS & JS

Barbara Streisand
Barbara Streisandoriginal
2024-10-02 06:40:30878parcourir

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

Fenêtres

powershell -c "irm git.new/mongogrator-installer.ps1 | iex"

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

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

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

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' })
}

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

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écuter les migrations

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     │
└───┴───────────────────────────────┴──────────────┘

Schéma de collecte des journaux

{
  _id: objectId(),
  name: string,
  createdAt: Date(),
}

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']
}

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!

Déclaration:
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