リポジトリはこちら
Mongogrator は、MongoDB 用の非常に高速なデータベース移行 CLI です。その目的は、開発段階と実稼働段階の移行を簡単に作成して実行することです
次のコマンドを使用すると、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
CLI の使用方法に関する基本ガイド
まず設定ファイルを初期化します
mongogrator init
これにより、コマンドの場所にある mongogrator.config.ts ファイルが初期化されます。オプションで、コマンドの最後に --js フラグを渡して js ファイルで初期化できます
目的の mongo クラスターへの URL を設定し、それが実行されていることを確認します
mongogrator add insert_user
これにより、構成 migrationsPath で割り当てられたディレクトリ キーの下に移行ファイルが作成されます
以下は新しく作成された ts 移行ファイルの例です
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 }
移行はネイティブ 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' }) }
必要なだけ移行を追加し、list コマンドを呼び出して各移行のステータスを表示できます
mongogrator list
これにより、すべての移行のリストが出力されます。それぞれのステータスは NOT MIGRATED または MIGRATED です
┌───┬───────────────────────────────┬──────────────┐ │ │ migration │ status │ ├───┼───────────────────────────────┼──────────────┤ │ 0 │ 20240923150201806_insert_user │ NOT MIGRATED │ └───┴───────────────────────────────┴──────────────┘
まだ移行を実行していないため、当然のことながら、ステータスは NOT MIGRATED になります
呼び出すだけで移行を実行できます
mongogrator migrate
これにより、すべての移行が実行され、構成 logsCollectionName で指定されたコレクション名でデータベースにログが記録されます
本番環境の場合、同じパスでアクセスできない場合は、構成パスを直接移行コマンドに渡すことができます
mongogrator migrate /dist
ここで list コマンドを再度実行すると、移行ファイルが正常に実行されたことがわかります
┌───┬───────────────────────────────┬──────────────┐ │ │ 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'] }
パス値を持つすべての設定キーは、設定ファイル自体の場所に相対的です
以上がMongogrator - TS および JS 用の MongoDB 移行ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。