logologo
Başlangıç
Kılavuz
Geliştirme
Eklentiler
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Başlangıç
Kılavuz
Geliştirme
Eklentiler
API
logologo

Hızlı Başlangıç

Eklenti Geliştirmeye Genel Bakış
İlk Eklentinizi Yazma
Proje Dizin Yapısı

Sunucu Taraflı Geliştirme

Genel Bakış
Plugin
Collections
Database İşlemleri
DataSourceManager
ResourceManager
ACL İzin Kontrolü
Middleware
Cache
Event
Context
Migration
Logger
I18n
Command
CronJobManager
Test

İstemci Taraflı Geliştirme

Genel Bakış
Plugin
Context
Router
ACL İzin Kontrolü
DataSourceManager
Resource
Request
Styles & Themes
Logger
I18n
Test

Diğer

Eklenti Yükseltme Kılavuzu
Dil Listesi
Bağımlılık Yönetimi
Derleme
Previous PageCollections
Next PageDataSourceManager
TIP

Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın

#Veritabanı

Database, veritabanı türündeki veri kaynaklarının (DataSource) önemli bir bileşenidir. Her veritabanı türündeki veri kaynağının, dataSource.db üzerinden erişilebilen karşılık gelen bir Database örneği bulunur. Ana veri kaynağının veritabanı örneği ayrıca kullanışlı app.db takma adını da sağlar. db'nin yaygın yöntemlerine aşina olmanız, sunucu tarafı eklentileri yazmanın temelini oluşturur.

#Veritabanı Bileşenleri

Tipik bir Database aşağıdaki bölümlerden oluşur:

  • koleksiyon: Veri tablosu yapısını tanımlar.
  • Model: ORM modellerine karşılık gelir (genellikle Sequelize tarafından yönetilir).
  • Repository: Veri erişim mantığını kapsülleyen, daha üst düzey işlem yöntemleri sunan bir depo katmanıdır.
  • FieldType: Alan türleri.
  • FilterOperator: Filtreleme için kullanılan operatörler.
  • Event: Yaşam döngüsü olayları ve veritabanı olayları.

#Eklentilerde Kullanım Zamanlaması

#beforeLoad Aşamasında Yapılabilecekler

Bu aşamada veritabanı işlemleri yapılamaz. Statik sınıf kaydı veya olay dinleme için uygundur.

  • db.registerFieldTypes() — Özel alan türleri
  • db.registerModels() — Özel model sınıflarını kaydetme
  • db.registerRepositories() — Özel repository sınıflarını kaydetme
  • db.registerOperators() — Özel filtre operatörlerini kaydetme
  • db.on() — Veritabanı ile ilgili olayları dinleme

#load Aşamasında Yapılabilecekler

Bu aşamada, önceki tüm sınıf tanımları ve olaylar yüklendiği için, veri tablolarını yüklerken eksik veya atlanmış bağımlılıklar olmaz.

  • db.defineCollection() — Yeni veri tabloları tanımlama
  • db.extendCollection() — Mevcut veri tablosu yapılandırmalarını genişletme

Eklentinin dahili tablolarını tanımlamak için, bunları ./src/server/collections dizinine yerleştirmeniz daha çok önerilir. Ayrıntılar için Koleksiyonlar bölümüne bakınız.

#Veri İşlemleri

Database, verilere erişmek ve onları işlemek için iki ana yöntem sunar:

#Repository Üzerinden İşlemler

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

Repository katmanı genellikle sayfalama, filtreleme, yetki kontrolü gibi iş mantığını kapsüllemek için kullanılır.

#Model Üzerinden İşlemler

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

Model katmanı doğrudan ORM varlıklarına karşılık gelir ve daha alt düzey veritabanı işlemleri için uygundur.

#Hangi Aşamalarda Veritabanı İşlemleri Yapılabilir?

#Eklenti Yaşam Döngüsü

AşamaVeritabanı İşlemlerine İzin Verilir
staticImportHayır
afterAddHayır
beforeLoadHayır
loadHayır
installEvet
beforeEnableEvet
afterEnableEvet
beforeDisableEvet
afterDisableEvet
removeEvet
handleSyncMessageEvet

#Uygulama Olayları

AşamaVeritabanı İşlemlerine İzin Verilir
beforeLoadHayır
afterLoadHayır
beforeStartEvet
afterStartEvet
beforeInstallHayır
afterInstallEvet
beforeStopEvet
afterStopHayır
beforeDestroyEvet
afterDestroyHayır
beforeLoadPluginHayır
afterLoadPluginHayır
beforeEnablePluginEvet
afterEnablePluginEvet
beforeDisablePluginEvet
afterDisablePluginEvet
afterUpgradeEvet

#Veritabanı Olayları/Kancaları

AşamaVeritabanı İşlemlerine İzin Verilir
beforeSyncHayır
afterSyncEvet
beforeValidateEvet
afterValidateEvet
beforeCreateEvet
afterCreateEvet
beforeUpdateEvet
afterUpdateEvet
beforeSaveEvet
afterSaveEvet
beforeDestroyEvet
afterDestroyEvet
afterCreateWithAssociationsEvet
afterUpdateWithAssociationsEvet
afterSaveWithAssociationsEvet
beforeDefineCollectionHayır
afterDefineCollectionHayır
beforeRemoveCollectionHayır
afterRemoveCollectionHayır