Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris
Selama proses pengembangan dan pembaruan plugin NocoBase, struktur basis data atau konfigurasi plugin mungkin mengalami perubahan yang tidak kompatibel. Untuk memastikan peningkatan berjalan lancar, NocoBase menyediakan mekanisme Migration yang menangani perubahan ini dengan menulis berkas migration. Artikel ini akan memandu Anda memahami penggunaan dan alur kerja pengembangan Migration secara sistematis.
Migration adalah skrip yang dieksekusi secara otomatis saat plugin ditingkatkan, berfungsi untuk mengatasi masalah berikut:
Waktu eksekusi Migration dibagi menjadi tiga jenis:
| Tipe | Waktu Pemicu | Skenario Eksekusi |
|---|---|---|
beforeLoad | Sebelum semua konfigurasi plugin dimuat | |
afterSync | Setelah konfigurasi koleksi disinkronkan dengan basis data (struktur koleksi sudah berubah) | |
afterLoad | Setelah semua konfigurasi plugin dimuat |
Berkas migration harus ditempatkan di src/server/migrations/*.ts dalam direktori plugin. NocoBase menyediakan perintah create-migration untuk menghasilkan berkas migration dengan cepat.
Parameter Opsional
| Parameter | Deskripsi |
|---|---|
--pkg <pkg> | Menentukan nama paket plugin |
--on [on] | Menentukan waktu eksekusi, opsi: beforeLoad, afterSync, afterLoad |
Contoh
Jalur berkas migration yang dihasilkan adalah sebagai berikut:
Konten awal berkas:
⚠️
appVersiondigunakan untuk mengidentifikasi versi yang ditargetkan oleh peningkatan. Lingkungan dengan versi kurang dari versi yang ditentukan akan mengeksekusi migration ini.
Dalam berkas Migration, Anda dapat mengakses properti umum dan API berikut melalui this untuk mengoperasikan basis data, plugin, dan instans aplikasi dengan mudah:
Properti Umum
this.app
Instans aplikasi NocoBase saat ini. Dapat digunakan untuk mengakses layanan global, plugin, atau konfigurasi.
this.db
Instans layanan basis data, menyediakan antarmuka untuk mengoperasikan model (koleksi).
this.plugin
Instans plugin saat ini, dapat digunakan untuk mengakses metode kustom plugin.
this.sequelize
Instans Sequelize, dapat mengeksekusi SQL mentah atau operasi transaksi secara langsung.
this.queryInterface
QueryInterface dari Sequelize, sering digunakan untuk memodifikasi struktur tabel, seperti menambahkan kolom, menghapus tabel, dll.
Contoh Penulisan Migration
Selain properti umum yang tercantum di atas, Migration juga menyediakan API yang kaya. Untuk dokumentasi terperinci, silakan lihat Migration API.
Eksekusi Migration dipicu oleh perintah nocobase upgrade:
Selama peningkatan, sistem akan menentukan urutan eksekusi berdasarkan tipe Migration dan appVersion.
Dalam pengembangan plugin, disarankan untuk menggunakan Mock Server untuk menguji apakah migration dieksekusi dengan benar, guna menghindari kerusakan pada data nyata.
Tip: Menggunakan Mock Server dapat dengan cepat mensimulasikan skenario peningkatan dan memverifikasi urutan eksekusi Migration serta perubahan data.
beforeLoad, afterSync, atau afterLoad berdasarkan objek operasi, hindari bergantung pada modul yang belum dimuat.appVersion untuk menentukan dengan jelas versi yang berlaku untuk migration guna mencegah eksekusi berulang.