Rumah >hujung hadapan web >tutorial js >Mongogrator - alat migrasi MongoDB untuk TS & JS
Repositori di sini
Mongogrator ialah CLI pemindahan pangkalan data yang sangat pantas untuk MongoDB. Tujuannya adalah untuk membuat dan menjalankan migrasi dengan mudah untuk peringkat pembangunan dan pengeluaran
Menggunakan arahan berikut, ia akan memuat turun, memasang dan menambah Monogrator pada PATH secara automatik
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
Panduan asas tentang cara menggunakan CLI
Mulakan dengan memulakan fail konfigurasi
mongogrator init
Ini memulakan fail mongogrator.config.ts di lokasi arahan. Anda boleh menghantar bendera --js secara pilihan pada penghujung arahan untuk memulakan dalam fail js
Sediakan url ke gugusan mongo yang diingini, dan pastikan ia berjalan
mongogrator add insert_user
Ini akan mencipta fail migrasi di bawah kunci direktori yang diberikan dalam config migrationPath
Berikut ialah contoh fail migrasi ts yang baru dibuat
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 }
Penghijrahan dilaksanakan melalui pemacu MongoDB Node.js asli
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' }) }
Anda boleh menambah seberapa banyak migrasi yang anda mahu dan kemudian memanggil arahan senarai untuk memaparkan status setiap satu
mongogrator list
Ini akan mencetak senarai semua penghijrahan, masing-masing mempunyai status sama ada TIDAK BERHIJRAH atau BERHIJRAH
┌───┬───────────────────────────────┬──────────────┐ │ │ migration │ status │ ├───┼───────────────────────────────┼──────────────┤ │ 0 │ 20240923150201806_insert_user │ NOT MIGRATED │ └───┴───────────────────────────────┴──────────────┘
Sememangnya, status TIDAK akan DIHIJRAH kerana kami belum menjalankan migrasi lagi
Jalankan migrasi hanya dengan memanggil
mongogrator migrate
Ini akan menjalankan semua migrasi dan log mereka ke pangkalan data di bawah nama koleksi yang ditentukan dalam log konfigurasiCollectionName
Untuk tujuan pengeluaran, anda boleh menghantar laluan konfigurasi kepada arahan migrasi secara terus jika ia tidak boleh diakses di bawah laluan yang sama
mongogrator migrate /dist
Sekarang jika anda menjalankan perintah senarai sekali lagi, ia akan mendedahkan bahawa fail migrasi telah berjaya dilaksanakan
┌───┬───────────────────────────────┬──────────────┐ │ │ 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'] }
semua kunci konfigurasi dengan nilai laluan adalah relatif kepada lokasi fail konfigurasi itu sendiri
Atas ialah kandungan terperinci Mongogrator - alat migrasi MongoDB untuk TS & JS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!