Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
NocoBase tarafından sunulan bir veritabanı etkileşim aracı olan Veritabanı, kodsuz ve az kodlu uygulamalar için oldukça kullanışlı veritabanı etkileşim yetenekleri sağlar. Şu anda desteklenen veritabanları şunlardır:
Database yapılandırıcısında (constructor), options parametresini ileterek veritabanı bağlantısını yapılandırabilirsiniz.
Detaylı yapılandırma parametreleri için lütfen Yapılandırıcı bölümüne bakın.
Database, veritabanı yapısını koleksiyon aracılığıyla tanımlar. Bir koleksiyon nesnesi, veritabanındaki bir tabloyu temsil eder.
Veritabanı yapısı tanımlandıktan sonra, sync() metodunu kullanarak veritabanı yapısını senkronize edebilirsiniz.
koleksiyon kullanımının daha detaylı açıklaması için lütfen koleksiyon bölümüne bakın.
Database, veriler üzerinde Repository aracılığıyla işlem yapar.
Veri CRUD işlemlerinin daha detaylı kullanımı için lütfen Repository bölümüne bakın.
İmza
constructor(options: DatabaseOptions)Bir veritabanı örneği oluşturur.
Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options.host | string | 'localhost' | Veritabanı ana bilgisayarı |
options.port | number | - | Veritabanı hizmet portu, kullanılan veritabanına göre varsayılan bir portu vardır |
options.username | string | - | Veritabanı kullanıcı adı |
options.password | string | - | Veritabanı parolası |
options.database | string | - | Veritabanı adı |
options.dialect | string | 'mysql' | Veritabanı türü |
options.storage? | string | ':memory:' | SQLite için depolama modu |
options.logging? | boolean | false | Loglamayı etkinleştirip etkinleştirmeme |
options.define? | Object | {} | Varsayılan tablo tanımlama parametreleri |
options.tablePrefix? | string | '' | NocoBase uzantısı, tablo adı öneki |
options.migrator? | UmzugOptions | {} | NocoBase uzantısı, geçiş yöneticisiyle ilgili parametreler, Umzug uygulamasını inceleyin |
addMigration()Tek bir geçiş dosyası ekler.
İmza
addMigration(options: MigrationItem)Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options.name | string | - | Geçiş dosyası adı |
options.context? | string | - | Geçiş dosyasının bağlamı |
options.migration? | typeof Migration | - | Geçiş dosyası için özel sınıf |
options.up | Function | - | Geçiş dosyasının up metodu |
options.down | Function | - | Geçiş dosyasının down metodu |
Örnek
addMigrations()Belirtilen bir dizindeki geçiş dosyalarını ekler.
İmza
addMigrations(options: AddMigrationsOptions): voidParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options.directory | string | '' | Geçiş dosyalarının bulunduğu dizin |
options.extensions | string[] | ['js', 'ts'] | Dosya uzantıları |
options.namespace? | string | '' | Ad alanı |
options.context? | Object | { db } | Geçiş dosyasının bağlamı |
Örnek
inDialect()Mevcut veritabanı türünün belirtilen türlerden biri olup olmadığını kontrol eder.
İmza
inDialect(dialect: string[]): booleanParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
dialect | string[] | - | Veritabanı türü, olası değerler mysql/postgres/mariadb |
getTablePrefix()Yapılandırmadaki tablo adı önekini alır.
İmza
getTablePrefix(): stringkoleksiyon()Bir koleksiyon tanımlar. Bu çağrı, Sequelize'ın define metoduna benzer; tablo yapısını yalnızca bellekte oluşturur. Veritabanına kalıcı olarak kaydetmek için sync metodunu çağırmanız gerekir.
İmza
collection(options: CollectionOptions): CollectionParametreler
Tüm options yapılandırma parametreleri, koleksiyon sınıfının yapılandırıcısıyla uyumludur, koleksiyon bölümüne bakın.
Olaylar
'beforeDefineCollection':koleksiyon tanımlanmadan önce tetiklenir.'afterDefineCollection':koleksiyon tanımlandıktan sonra tetiklenir.Örnek
getCollection()Tanımlanmış bir koleksiyon alır.
İmza
getCollection(name: string): CollectionParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
name | string | - | koleksiyon adı |
Örnek
hasCollection()Belirtilen bir koleksiyonun tanımlanıp tanımlanmadığını kontrol eder.
İmza
hasCollection(name: string): booleanParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
name | string | - | koleksiyon adı |
Örnek
removeCollection()Tanımlanmış bir koleksiyonu kaldırır. Yalnızca bellekten kaldırılır; değişikliği kalıcı hale getirmek için sync metodunu çağırmanız gerekir.
İmza
removeCollection(name: string): voidParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
name | string | - | koleksiyon adı |
Olaylar
'beforeRemoveCollection':koleksiyon kaldırılmadan önce tetiklenir.'afterRemoveCollection':koleksiyon kaldırıldıktan sonra tetiklenir.Örnek
import()Bir dizindeki tüm dosyaları koleksiyon yapılandırmaları olarak belleğe aktarır.
İmza
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options.directory | string | - | Aktarılacak dizinin yolu |
options.extensions | string[] | ['ts', 'js'] | Belirli uzantıları tara |
Örnek
./collections/books.ts dosyasında tanımlanan koleksiyon aşağıdaki gibidir:
eklenti yüklendiğinde ilgili yapılandırmayı aktarın:
registerFieldTypes()Özel alan türlerini kaydeder.
İmza
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParametreler
fieldTypes, anahtarın alan türü adı, değerin ise alan türü sınıfı olduğu bir anahtar-değer çiftidir.
Örnek
registerModels()Özel veri modeli sınıflarını kaydeder.
İmza
registerModels(models: MapOf<ModelStatic<any>>): voidParametreler
models, anahtarın veri modeli adı, değerin ise veri modeli sınıfı olduğu bir anahtar-değer çiftidir.
Örnek
registerRepositories()Özel Repository sınıflarını kaydeder.
İmza
registerRepositories(repositories: MapOf<RepositoryType>): voidParametreler
repositories, anahtarın Repository adı, değerin ise Repository sınıfı olduğu bir anahtar-değer çiftidir.
Örnek
registerOperators()Özel veri sorgu operatörlerini kaydeder.
İmza
registerOperators(operators: MapOf<OperatorFunc>)Parametreler
operators, anahtarın operatör adı, değerin ise karşılaştırma ifadesini oluşturan fonksiyon olduğu bir anahtar-değer çiftidir.
Örnek
getModel()Tanımlanmış bir veri modeli sınıfını alır. Daha önce özel bir model sınıfı kaydedilmediyse, varsayılan Sequelize model sınıfını döndürür. Varsayılan ad, koleksiyon adıyla aynıdır.
İmza
getModel(name: string): ModelParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
name | string | - | Kaydedilmiş model adı |
Örnek
Not: Bir koleksiyondan alınan model sınıfı, kaydedilen model sınıfıyla tam olarak aynı değildir, ancak ondan miras alır. Sequelize'ın model sınıfı özellikleri başlatma sırasında değiştirildiği için, NocoBase bu miras ilişkisini otomatik olarak yönetir. Sınıf eşitsizliği dışında, diğer tüm tanımlamalar normal şekilde kullanılabilir.
getRepository()Özel bir Repository sınıfı alır. Daha önce özel bir Repository sınıfı kaydedilmediyse, varsayılan NocoBase Repository sınıfını döndürür. Varsayılan ad, koleksiyon adıyla aynıdır.
Repository sınıfları, temel olarak veri modellerine dayalı CRUD işlemleri için kullanılır, Repository bölümüne bakın.
İmza
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
name | string | - | Kaydedilmiş Repository adı |
relationId | string | number | - | İlişkisel veriler için yabancı anahtar değeri |
Ad, 'tables.relations' gibi ilişkisel bir ad olduğunda, ilişkili Repository sınıfını döndürür. İkinci parametre sağlanırsa, Repository kullanılırken (sorgulama, güncelleme vb.) ilişkisel verilerin yabancı anahtar değerine dayanır.
Örnek
Diyelim ki yazılar ve yazarlar adında iki koleksiyon var ve yazılar koleksiyonunda yazarlar koleksiyonuna işaret eden bir yabancı anahtar bulunuyor:
on()Veritabanı olaylarını dinler.
İmza
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
| event | string | - | Olay adı |
| listener | Function | - | Olay dinleyicisi |
Olay adları varsayılan olarak Sequelize'ın Model olaylarını destekler. Genel olaylar için <sequelize_model_global_event> formatını, tekil Model olayları için ise <model_name>.<sequelize_model_event> formatını kullanarak dinleyebilirsiniz.
Tüm yerleşik olay türlerinin parametre açıklamaları ve detaylı örnekleri için Yerleşik Olaylar bölümüne bakın.
off()Bir olay dinleyici fonksiyonunu kaldırır.
İmza
off(name: string, listener: Function)Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
| name | string | - | Olay adı |
| listener | Function | - | Olay dinleyicisi |
Örnek
auth()Veritabanı bağlantı doğrulaması. Uygulamanın verilerle bağlantı kurduğunu doğrulamak için kullanılabilir.
İmza
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options? | Object | - | Doğrulama seçenekleri |
options.retry? | number | 10 | Doğrulama başarısız olduğunda yeniden deneme sayısı |
options.transaction? | Transaction | - | İşlem nesnesi |
options.logging? | boolean | Function | false | Logları yazdırıp yazdırmama |
Örnek
reconnect()Veritabanına yeniden bağlanır.
Örnek
closed()Veritabanı bağlantısının kapalı olup olmadığını kontrol eder.
İmza
closed(): booleanclose()Veritabanı bağlantısını kapatır. sequelize.close() ile eşdeğerdir.
sync()Veritabanı koleksiyon yapısını senkronize eder. sequelize.sync() ile eşdeğerdir, parametreler için Sequelize dokümantasyonuna bakın.
clean()Veritabanını temizler, tüm koleksiyonları siler.
İmza
clean(options: CleanOptions): Promise<void>Parametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
options.drop | boolean | false | Tüm koleksiyonları silip silmeme |
options.skip | string[] | - | Atlanacak koleksiyon adlarının yapılandırması |
options.transaction | Transaction | - | İşlem nesnesi |
Örnek
users koleksiyonu hariç tüm koleksiyonları kaldırır.
defineCollection()Bir koleksiyon için yapılandırma içeriğini oluşturur.
İmza
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Tüm db.collection() parametreleriyle aynıdır |
Örnek
db.import() tarafından aktarılacak bir koleksiyon yapılandırma dosyası için:
extendCollection()Bellekteki bir koleksiyonun yapılandırma içeriğini genişletir, özellikle import() metoduyla aktarılan dosya içeriği için kullanılır. Bu metot, @nocobase/database paketi tarafından dışa aktarılan üst düzey bir metottur ve bir db örneği aracılığıyla çağrılmaz. extend takma adı da kullanılabilir.
İmza
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParametreler
| Parametre Adı | Tür | Varsayılan Değer | Açıklama |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Tüm db.collection() parametreleriyle aynıdır |
mergeOptions? | MergeOptions | - | npm paketi deepmerge için parametreler |
Örnek
Orijinal kitaplar koleksiyonu tanımı (books.ts):
Genişletilmiş kitaplar koleksiyonu tanımı (books.extend.ts):
Yukarıdaki iki dosya import() çağrılırken aktarılırsa, extend() ile tekrar genişletildikten sonra, kitaplar koleksiyonu hem title hem de price alanlarına sahip olacaktır.
Bu metot, mevcut eklentiler tarafından zaten tanımlanmış koleksiyon yapılarını genişletmek için çok kullanışlıdır.
Veritabanı, yaşam döngüsünün farklı aşamalarında aşağıdaki ilgili olayları tetikler. on() metoduyla bunlara abone olmak, belirli iş ihtiyaçlarını karşılamak için özel işlem yapılmasına olanak tanır.
'beforeSync' / 'afterSync'Yeni bir koleksiyon yapılandırması (alanlar, indeksler vb.) veritabanına senkronize edilmeden önce ve sonra tetiklenir. Genellikle collection.sync() (dahili çağrı) yürütüldüğünde tetiklenir ve özel alan uzantıları için mantık işlemek amacıyla kullanılır.
İmza
Tür
Örnek
'beforeValidate' / 'afterValidate'Veri oluşturmadan veya güncellemeden önce, koleksiyonda tanımlanan kurallara dayalı bir doğrulama süreci vardır. Doğrulama öncesinde ve sonrasında ilgili olaylar tetiklenir. Bu, repository.create() veya repository.update() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'beforeCreate' / 'afterCreate'Bir kayıt oluşturulmadan önce ve sonra ilgili olaylar tetiklenir. Bu, repository.create() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'beforeUpdate' / 'afterUpdate'Bir kayıt güncellenmeden önce ve sonra ilgili olaylar tetiklenir. Bu, repository.update() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'beforeSave' / 'afterSave'Bir kayıt oluşturulmadan veya güncellenmeden önce ve sonra ilgili olaylar tetiklenir. Bu, repository.create() veya repository.update() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'beforeDestroy' / 'afterDestroy'Bir kayıt silinmeden önce ve sonra ilgili olaylar tetiklenir. Bu, repository.destroy() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'afterCreateWithAssociations'Bu olay, hiyerarşik ilişki verileriyle bir kayıt oluşturulduktan sonra tetiklenir. repository.create() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'afterUpdateWithAssociations'Bu olay, hiyerarşik ilişki verileriyle bir kayıt güncellendikten sonra tetiklenir. repository.update() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'afterSaveWithAssociations'Bu olay, hiyerarşik ilişki verileriyle bir kayıt oluşturulduktan veya güncellendikten sonra tetiklenir. repository.create() veya repository.update() çağrıldığında tetiklenir.
İmza
Tür
Örnek
'beforeDefineCollection'Bir koleksiyon tanımlanmadan önce tetiklenir, örneğin db.collection() çağrıldığında.
Not: Bu senkron bir olaydır.
İmza
Tür
Örnek
'afterDefineCollection'Bir koleksiyon tanımlandıktan sonra tetiklenir, örneğin db.collection() çağrıldığında.
Not: Bu senkron bir olaydır.
İmza
Tür
Örnek
'beforeRemoveCollection' / 'afterRemoveCollection'Bir koleksiyon bellekten kaldırılmadan önce ve sonra tetiklenir, örneğin db.removeCollection() çağrıldığında.
Not: Bu senkron bir olaydır.
İmza
Tür
Örnek