Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
NocoBase eklenti geliştirme ve güncelleme süreçlerinde, eklentilerin veri tabanı yapıları veya konfigürasyonları uyumsuz değişikliklere uğrayabilir. Yükseltmelerin sorunsuz bir şekilde gerçekleşmesini sağlamak için NocoBase, bu değişiklikleri migration dosyaları yazarak yöneten bir Migration mekanizması sunar. Bu rehber, Migration kullanımını ve geliştirme iş akışını sistematik bir şekilde anlamanıza yardımcı olacaktır.
Migration, eklenti yükseltmeleri sırasında otomatik olarak çalışan bir betiktir ve aşağıdaki sorunları çözmek için kullanılır:
Migration'ın çalışma zamanlaması üç kategoriye ayrılır:
| Tip | Tetiklenme Zamanı | Çalışma Senaryosu |
|---|---|---|
beforeLoad | Tüm eklenti konfigürasyonları yüklenmeden önce | |
afterSync | Koleksiyon konfigürasyonları veri tabanıyla senkronize edildikten sonra (koleksiyon yapısı zaten değiştirilmiş) | |
afterLoad | Tüm eklenti konfigürasyonları yüklendikten sonra |
Migration dosyaları, eklenti dizininin altındaki src/server/migrations/*.ts konumuna yerleştirilmelidir. NocoBase, migration dosyalarını hızlıca oluşturmak için create-migration komutunu sunar.
İsteğe Bağlı Parametreler
| Parametre | Açıklama |
|---|---|
--pkg <pkg> | Eklenti paket adını belirtir |
--on [on] | Çalışma zamanlamasını belirtir, seçenekler: beforeLoad, afterSync, afterLoad |
Örnek
Oluşturulan migration dosyasının yolu aşağıdaki gibidir:
Dosyanın başlangıç içeriği:
⚠️
appVersion, yükseltmenin hedeflendiği sürümü belirtmek için kullanılır. Belirtilen sürümden daha düşük sürümlere sahip ortamlar bu migration'ı çalıştıracaktır.
Migration dosyalarında, veri tabanı, eklentiler ve uygulama örnekleri üzerinde kolayca işlem yapmak için this aracılığıyla aşağıdaki yaygın özelliklere ve API'lere erişebilirsiniz:
Yaygın Özellikler
this.app
Mevcut NocoBase uygulama örneği. Global servislere, eklentilere veya konfigürasyona erişmek için kullanılabilir.
this.db
Veri tabanı servis örneği, modeller (koleksiyonlar) üzerinde işlem yapmak için arayüzler sağlar.
this.plugin
Mevcut eklenti örneği, eklentinin özel metotlarına erişmek için kullanılabilir.
this.sequelize
Sequelize örneği, doğrudan ham SQL veya işlem (transaction) operasyonlarını yürütmek için kullanılabilir.
this.queryInterface
Sequelize'ın QueryInterface'i, genellikle tablo yapılarını değiştirmek için kullanılır; örneğin, alan ekleme, tablo silme gibi.
Migration Yazma Örneği
Yukarıda listelenen yaygın özelliklere ek olarak, Migration zengin API'ler de sunar. Detaylı dokümantasyon için lütfen Migration API adresine bakın.
Migration'ın çalıştırılması nocobase upgrade komutuyla tetiklenir:
Yükseltme sırasında sistem, Migration'ın tipine ve appVersion'a göre çalışma sırasını belirleyecektir.
Eklenti geliştirme sürecinde, gerçek verilere zarar vermemek için migration'ın doğru çalışıp çalışmadığını test etmek amacıyla Mock Server kullanmanız önerilir.
İpucu: Mock Server kullanarak yükseltme senaryolarını hızlıca simüle edebilir ve Migration'ın çalışma sırasını ve veri değişikliklerini doğrulayabilirsiniz.
beforeLoad, afterSync veya afterLoad seçeneklerinden birini seçin; yüklenmemiş modüllere bağımlılıktan kaçının.appVersion kullanarak migration'ın uygulanacağı sürümü açıkça belirtin ve tekrar tekrar çalışmasını önleyin.