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

بدء سريع

نظرة عامة على تطوير الإضافات
كتابة الإضافة الأولى
هيكل دليل المشروع

تطوير الواجهة الخلفية

نظرة عامة
Plugin
جداول بيانات Collections
عمليات Database
إدارة مصادر بيانات DataSourceManager
إدارة موارد ResourceManager
التحكم في أذونات ACL
Middleware
Cache
Event
سياق طلب Context
نص ترقية Migration
Logger
Telemetry
I18n (تدويل)
Command (سطر الأوامر)
إدارة المهام المجدولة CronJobManager
Test

تطوير الواجهة الأمامية

نظرة عامة
Plugin
Context (السياق)
Router
التحكم في أذونات ACL
إدارة مصادر بيانات DataSourceManager
Resource
Request
Styles & Themes (الأنماط والمظاهر)
Logger
I18n (تدويل)
Test

أخرى

دليل ترقية الإضافات
قائمة اللغات
إدارة التبعيات
البناء
Previous Pageعمليات Database
Next Pageإدارة موارد ResourceManager
إشعار الترجمة بالذكاء الاصطناعي

تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.

#DataSourceManager إدارة مصادر البيانات

توفر NocoBase أداة DataSourceManager لإدارة مصادر بيانات متعددة. يحتوي كل DataSource على نسخ خاصة به من Database وResourceManager وACL، مما يسهل على المطورين إدارة وتوسيع مصادر البيانات المتعددة بمرونة.

#المفاهيم الأساسية

يحتوي كل نسخة من DataSource على ما يلي:

  • dataSource.collectionManager: يُستخدم لإدارة المجموعات والحقول.
  • dataSource.resourceManager: يتعامل مع العمليات المتعلقة بالموارد (مثل عمليات الإنشاء والقراءة والتحديث والحذف - CRUD - وغيرها).
  • dataSource.acl: التحكم في الوصول (ACL) لعمليات الموارد.

لتسهيل الوصول، تتوفر أسماء مستعارة سريعة لأعضاء مصدر البيانات الرئيسي:

  • app.db يكافئ dataSourceManager.get('main').collectionManager.db
  • app.acl يكافئ dataSourceManager.get('main').acl
  • app.resourceManager يكافئ dataSourceManager.get('main').resourceManager

#الطرق الشائعة

#dataSourceManager.get(dataSourceKey)

تُرجع هذه الدالة نسخة DataSource المحددة.

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

#dataSourceManager.use()

لتسجيل برمجيات وسيطة (middleware) لجميع مصادر البيانات. سيؤثر هذا على العمليات في جميع مصادر البيانات.

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

#dataSourceManager.beforeAddDataSource()

يُنفذ قبل تحميل مصدر البيانات. يُستخدم عادة لتسجيل الفئات الثابتة، مثل فئات النموذج وتسجيل أنواع الحقول:

dataSourceManager.beforeAddDataSource((dataSource: DataSource) => {
  const collectionManager = dataSource.collectionManager;
  if (collectionManager instanceof SequelizeCollectionManager) {
    collectionManager.registerFieldTypes({
      belongsToArray: BelongsToArrayField, // نوع حقل مخصص
    });
  }
});

#dataSourceManager.afterAddDataSource()

يُنفذ بعد تحميل مصدر البيانات. يُستخدم عادة لتسجيل العمليات، وتعيين التحكم في الوصول، وما إلى ذلك.

dataSourceManager.afterAddDataSource((dataSource) => {
  dataSource.resourceManager.registerActionHandler('downloadXlsxTemplate', downloadXlsxTemplate);
  dataSource.resourceManager.registerActionHandler('importXlsx', importXlsx);
  dataSource.acl.allow('*', 'downloadXlsxTemplate', 'loggedIn'); // تعيين صلاحيات الوصول
});

#توسيع مصدر البيانات

للحصول على توسيع كامل لمصدر البيانات، يرجى الرجوع إلى فصل توسيع مصدر البيانات.