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جداول بيانات Collections
Next Pageإدارة مصادر بيانات DataSourceManager
إشعار الترجمة بالذكاء الاصطناعي

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

#قاعدة البيانات

تُعد Database مكونًا أساسيًا لمصادر البيانات من نوع قاعدة البيانات (DataSource). يمتلك كل مصدر بيانات من نوع قاعدة البيانات نسخة (instance) مقابلة من Database، يمكن الوصول إليها عبر dataSource.db. توفر نسخة قاعدة البيانات لمصدر البيانات الرئيسي أيضًا الاسم المستعار المريح app.db. إن الإلمام بالأساليب الشائعة لـ db هو أساس كتابة الإضافات (Plugin) من جانب الخادم.

#مكونات قاعدة البيانات

تتكون Database النموذجية من الأجزاء التالية:

  • مجموعة (Collection): تُعرّف بنية جدول البيانات.
  • Model: يتوافق مع نماذج ORM (عادةً ما تتم إدارتها بواسطة Sequelize).
  • Repository: طبقة المستودع التي تغلف منطق الوصول إلى البيانات، وتوفر أساليب تشغيل أعلى مستوى.
  • FieldType: أنواع الحقول.
  • FilterOperator: عوامل التشغيل المستخدمة للتصفية.
  • Event: أحداث دورة الحياة وأحداث قاعدة البيانات.

#توقيت الاستخدام في الإضافات

#ما يناسب مرحلة beforeLoad

في هذه المرحلة، لا يُسمح بإجراء عمليات على قاعدة البيانات. وهي مناسبة لتسجيل الفئات الساكنة (static classes) أو الاستماع إلى الأحداث.

  • db.registerFieldTypes() — أنواع الحقول المخصصة
  • db.registerModels() — تسجيل فئات النموذج المخصصة
  • db.registerRepositories() — تسجيل فئات المستودع المخصصة
  • db.registerOperators() — تسجيل عوامل التصفية المخصصة
  • db.on() — الاستماع إلى الأحداث المتعلقة بقاعدة البيانات

#ما يناسب مرحلة load

في هذه المرحلة، تكون جميع تعريفات الفئات والأحداث السابقة قد تم تحميلها، وبالتالي لن يكون هناك أي نقص أو إغفال عند تحميل جداول البيانات.

  • db.defineCollection() — تعريف جداول بيانات جديدة
  • db.extendCollection() — توسيع إعدادات جداول البيانات الموجودة

إذا كنت تُعرّف جداول مدمجة للإضافة (Plugin)، فمن الأفضل وضعها في دليل ./src/server/collections. لمزيد من التفاصيل، راجع المجموعات.

#عمليات البيانات

توفر Database طريقتين رئيسيتين للوصول إلى البيانات والتعامل معها:

#العمليات عبر Repository

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

تُستخدم طبقة Repository عادةً لتغليف منطق الأعمال، مثل تقسيم الصفحات (pagination)، والتصفية (filtering)، وفحص الأذونات (permission checks)، وما إلى ذلك.

#العمليات عبر Model

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

تتوافق طبقة Model مباشرةً مع كيانات ORM، وهي مناسبة لتنفيذ عمليات قاعدة البيانات ذات المستوى الأدنى.

#ما هي المراحل التي تسمح بعمليات قاعدة البيانات؟

#دورة حياة الإضافة (Plugin)

المرحلةهل يُسمح بعمليات قاعدة البيانات؟
staticImportلا
afterAddلا
beforeLoadلا
loadلا
installنعم
beforeEnableنعم
afterEnableنعم
beforeDisableنعم
afterDisableنعم
removeنعم
handleSyncMessageنعم

#أحداث التطبيق (App)

المرحلةهل يُسمح بعمليات قاعدة البيانات؟
beforeLoadلا
afterLoadلا
beforeStartنعم
afterStartنعم
beforeInstallلا
afterInstallنعم
beforeStopنعم
afterStopلا
beforeDestroyنعم
afterDestroyلا
beforeLoadPluginلا
afterLoadPluginلا
beforeEnablePluginنعم
afterEnablePluginنعم
beforeDisablePluginنعم
afterDisablePluginنعم
afterUpgradeنعم

#أحداث/خطافات قاعدة البيانات (Database Events/Hooks)

المرحلةهل يُسمح بعمليات قاعدة البيانات؟
beforeSyncلا
afterSyncنعم
beforeValidateنعم
afterValidateنعم
beforeCreateنعم
afterCreateنعم
beforeUpdateنعم
afterUpdateنعم
beforeSaveنعم
afterSaveنعم
beforeDestroyنعم
afterDestroyنعم
afterCreateWithAssociationsنعم
afterUpdateWithAssociationsنعم
afterSaveWithAssociationsنعم
beforeDefineCollectionلا
afterDefineCollectionلا
beforeRemoveCollectionلا
afterRemoveCollectionلا