تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
تُعد Database مكونًا أساسيًا لمصادر البيانات من نوع قاعدة البيانات (DataSource). يمتلك كل مصدر بيانات من نوع قاعدة البيانات نسخة (instance) مقابلة من Database، يمكن الوصول إليها عبر dataSource.db. توفر نسخة قاعدة البيانات لمصدر البيانات الرئيسي أيضًا الاسم المستعار المريح app.db. إن الإلمام بالأساليب الشائعة لـ db هو أساس كتابة الإضافات (Plugin) من جانب الخادم.
تتكون Database النموذجية من الأجزاء التالية:
Collection): تُعرّف بنية جدول البيانات.beforeLoadفي هذه المرحلة، لا يُسمح بإجراء عمليات على قاعدة البيانات. وهي مناسبة لتسجيل الفئات الساكنة (static classes) أو الاستماع إلى الأحداث.
db.registerFieldTypes() — أنواع الحقول المخصصةdb.registerModels() — تسجيل فئات النموذج المخصصةdb.registerRepositories() — تسجيل فئات المستودع المخصصةdb.registerOperators() — تسجيل عوامل التصفية المخصصةdb.on() — الاستماع إلى الأحداث المتعلقة بقاعدة البياناتloadفي هذه المرحلة، تكون جميع تعريفات الفئات والأحداث السابقة قد تم تحميلها، وبالتالي لن يكون هناك أي نقص أو إغفال عند تحميل جداول البيانات.
db.defineCollection() — تعريف جداول بيانات جديدةdb.extendCollection() — توسيع إعدادات جداول البيانات الموجودةإذا كنت تُعرّف جداول مدمجة للإضافة (Plugin)، فمن الأفضل وضعها في دليل ./src/server/collections. لمزيد من التفاصيل، راجع المجموعات.
توفر Database طريقتين رئيسيتين للوصول إلى البيانات والتعامل معها:
Repositoryتُستخدم طبقة Repository عادةً لتغليف منطق الأعمال، مثل تقسيم الصفحات (pagination)، والتصفية (filtering)، وفحص الأذونات (permission checks)، وما إلى ذلك.
Modelتتوافق طبقة 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 | لا |