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 PageDatabase İşlemleri
Next PageResourceManager
TIP

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

#DataSourceManager Veri Kaynağı Yönetimi

NocoBase, birden fazla veri kaynağını yönetmek için DataSourceManager sağlar. Her bir DataSource'un kendine ait bir Database, ResourceManager ve ACL örneği bulunur. Bu yapı, geliştiricilerin birden fazla veri kaynağını esnek bir şekilde yönetmesini ve genişletmesini kolaylaştırır.

#Temel Kavramlar

Her bir DataSource örneği aşağıdaki bileşenleri içerir:

  • dataSource.collectionManager: Koleksiyonları ve alanları yönetmek için kullanılır.
  • dataSource.resourceManager: Kaynaklarla ilgili işlemleri (örneğin, CRUD işlemleri gibi) yönetir.
  • dataSource.acl: Kaynak işlemleri için erişim kontrolünü (ACL) sağlar.

Kolay erişim sağlamak amacıyla, ana veri kaynağı üyeleri için kısayol takma adları (alias) sunulmuştur:

  • app.db, dataSourceManager.get('main').collectionManager.db ile eşdeğerdir.
  • app.acl, dataSourceManager.get('main').acl ile eşdeğerdir.
  • app.resourceManager, dataSourceManager.get('main').resourceManager ile eşdeğerdir.

#Sık Kullanılan Metotlar

#dataSourceManager.get(dataSourceKey)

Bu metot, belirtilen DataSource örneğini döndürür.

const dataSource = dataSourceManager.get('main');

#dataSourceManager.use()

Tüm veri kaynakları için middleware (ara yazılım) kaydeder. Bu işlem, tüm veri kaynaklarındaki operasyonları etkileyecektir.

dataSourceManager.use((ctx, next) => {
  console.log('This middleware applies to all data sources.');
  await next();
});

#dataSourceManager.beforeAddDataSource()

Veri kaynağı yüklenmeden önce çalışır. Genellikle model sınıfları ve alan türü kaydı gibi statik sınıf kayıtları için kullanılır:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // Özel alan türü
    });
  }
});

#dataSourceManager.afterAddDataSource()

Veri kaynağı yüklendikten sonra çalışır. Genellikle operasyonları kaydetmek, erişim kontrolünü ayarlamak gibi işlemler için kullanılır.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // Erişim izinlerini ayarlar
});

#Veri Kaynağı Genişletme

Veri kaynağı genişletme hakkında daha fazla bilgi için lütfen veri kaynağı genişletme bölümüne bakınız.