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
כתיבת Plugin ראשון
מבנה תיקיות הפרויקט

פיתוח Server-side

סקירה כללית
Plugin
Collections טבלאות נתונים
Database: פעולות
DataSourceManager - ניהול מקורות נתונים
ResourceManager
ACL בקרת הרשאות
Middleware
Cache
Event
Context - הקשר בקשה
Migration סקריפט שדרוג
Logger יומן
Telemetry
I18n בינאום
Command
CronJobManager ניהול משימות מתוזמנות
Test

פיתוח Client-side

סקירה כללית
Plugin
Context
Router ניתוב
ACL בקרת הרשאות
DataSourceManager - ניהול מקורות נתונים
Resource
Request
Styles & Themes
Logger יומן
I18n בינאום
Test

אחר

מדריך שדרוג Plugin
רשימת שפות
ניהול תלויות
בנייה
Previous PageCollections טבלאות נתונים
Next PageDataSourceManager - ניהול מקורות נתונים
TIP

מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית

#מסד נתונים

Database הוא רכיב חשוב במקורות נתונים מסוג מסד נתונים (DataSource). לכל מקור נתונים מסוג מסד נתונים יש מופע Database מתאים, הנגיש דרך dataSource.db. מופע מסד הנתונים של מקור הנתונים הראשי מספק גם את הכינוי הנוח app.db. היכרות עם השיטות הנפוצות של db היא הבסיס לכתיבת תוספים בצד השרת.

#רכיבי ה-Database

Database טיפוסי מורכב מהחלקים הבאים:

  • אוסף (Collection): מגדיר את מבנה טבלת הנתונים.
  • Model: מתאים למודלים של ORM (מנוהל בדרך כלל על ידי Sequelize).
  • Repository: שכבת מאגר המכילה לוגיקה לגישה לנתונים, ומספקת שיטות פעולה ברמה גבוהה יותר.
  • FieldType: סוגי שדות.
  • FilterOperator: אופרטורים המשמשים לסינון.
  • Event: אירועי מחזור חיים ואירועי מסד נתונים.

#תזמון שימוש בתוספים

#פעולות מתאימות בשלב beforeLoad

בשלב זה, אין לבצע פעולות במסד הנתונים. הוא מתאים לרישום מחלקות סטטיות או להאזנה לאירועים.

  • db.registerFieldTypes() — סוגי שדות מותאמים אישית
  • db.registerModels() — רישום מחלקות Model מותאמות אישית
  • db.registerRepositories() — רישום מחלקות Repository מותאמות אישית
  • db.registerOperators() — רישום אופרטורי סינון מותאמים אישית
  • db.on() — האזנה לאירועים הקשורים למסד הנתונים

#פעולות מתאימות בשלב load

בשלב זה, כל הגדרות המחלקות והאירועים הקודמים כבר נטענו, כך שטעינת טבלאות נתונים לא תכלול חוסרים או השמטות.

  • db.defineCollection() — הגדרת טבלאות נתונים חדשות
  • db.extendCollection() — הרחבת תצורות טבלאות נתונים קיימות

אם אתם מגדירים טבלאות מובנות של תוספים, מומלץ יותר למקם אותן בספרייה ./src/server/collections. לפרטים נוספים, ראו אוספים.

#פעולות נתונים

Database מספק שתי דרכים עיקריות לגישה ולתפעול נתונים:

#פעולות באמצעות Repository

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

שכבת ה-Repository משמשת בדרך כלל לעטיפת לוגיקה עסקית, כגון חלוקה לעמודים (pagination), סינון, בדיקות הרשאות ועוד.

#פעולות באמצעות Model

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

שכבת ה-Model מתאימה ישירות לישויות ORM, והיא מתאימה לביצוע פעולות מסד נתונים ברמה נמוכה יותר.

#באילו שלבים מותר לבצע פעולות במסד הנתונים?

#מחזור חיים של תוסף

שלבמותר לבצע פעולות במסד הנתונים
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

שלבמותר לבצע פעולות במסד הנתונים
beforeSyncלא
afterSyncכן
beforeValidateכן
afterValidateכן
beforeCreateכן
afterCreateכן
beforeUpdateכן
afterUpdateכן
beforeSaveכן
afterSaveכן
beforeDestroyכן
afterDestroyכן
afterCreateWithAssociationsכן
afterUpdateWithAssociationsכן
afterSaveWithAssociationsכן
beforeDefineCollectionלא
afterDefineCollectionלא
beforeRemoveCollectionלא
afterRemoveCollectionלא