מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית
Database הוא כלי אינטראקציה עם מסד נתונים המסופק על ידי NocoBase, המציע יכולות נוחות לאינטראקציה עם מסד נתונים עבור יישומי No-code ו-Low-code. מסדי הנתונים הנתמכים כרגע הם:
בפונקציית הבנאי (constructor) של Database, ניתן להגדיר את חיבור מסד הנתונים על ידי העברת הפרמטר options.
לפרמטרי תצורה מפורטים, עיינו ב-בנאי.
Database מגדיר את מבנה מסד הנתונים באמצעות Collection (אוסף). אובייקט Collection מייצג טבלה במסד הנתונים.
לאחר הגדרת מבנה מסד הנתונים, ניתן להשתמש בשיטה sync() כדי לסנכרן את מבנה מסד הנתונים.
לשימוש מפורט יותר ב-Collection, עיינו ב-Collection.
Database מבצע פעולות על נתונים באמצעות Repository.
לשימוש מפורט יותר בפעולות CRUD על נתונים, עיינו ב-Repository.
חתימה
constructor(options: DatabaseOptions)יוצר מופע של מסד נתונים.
פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options.host | string | 'localhost' | מארח מסד הנתונים |
options.port | number | - | פורט שירות מסד הנתונים, עם פורט ברירת מחדל מתאים למסד הנתונים בשימוש |
options.username | string | - | שם משתמש של מסד הנתונים |
options.password | string | - | סיסמת מסד הנתונים |
options.database | string | - | שם מסד הנתונים |
options.dialect | string | 'mysql' | סוג מסד הנתונים |
options.storage? | string | ':memory:' | מצב האחסון עבור SQLite |
options.logging? | boolean | false | האם להפעיל רישום יומן (logging) |
options.define? | Object | {} | פרמטרי הגדרת טבלה ברירת מחדל |
options.tablePrefix? | string | '' | הרחבת NocoBase, קידומת לשם הטבלה |
options.migrator? | UmzugOptions | {} | הרחבת NocoBase, פרמטרים הקשורים למנהל ההעברות (migration manager), עיינו ביישום Umzug |
addMigration()מוסיף קובץ העברה בודד.
חתימה
addMigration(options: MigrationItem)פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options.name | string | - | שם קובץ ההעברה |
options.context? | string | - | הקשר של קובץ ההעברה |
options.migration? | typeof Migration | - | מחלקה מותאמת אישית לקובץ ההעברה |
options.up | Function | - | שיטת up של קובץ ההעברה |
options.down | Function | - | שיטת down של קובץ ההעברה |
דוגמה
addMigrations()מוסיף קבצי העברה מתיקייה ספציפית.
חתימה
addMigrations(options: AddMigrationsOptions): voidפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options.directory | string | '' | תיקיית קבצי ההעברה |
options.extensions | string[] | ['js', 'ts'] | סיומות קבצים |
options.namespace? | string | '' | מרחב שמות |
options.context? | Object | { db } | הקשר של קובץ ההעברה |
דוגמה
inDialect()בודק/ת אם סוג מסד הנתונים הנוכחי הוא אחד מהסוגים שצוינו.
חתימה
inDialect(dialect: string[]): booleanפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
dialect | string[] | - | סוג מסד נתונים, ערכים אפשריים הם mysql/postgres/mariadb |
getTablePrefix()מקבל/ת את קידומת שם הטבלה מהתצורה.
חתימה
getTablePrefix(): stringcollection()מגדיר/ה אוסף. קריאה זו דומה לשיטת define של Sequelize, ויוצרת את מבנה הטבלה רק בזיכרון. כדי לשמור אותו במסד הנתונים, עליך לקרוא לשיטה sync.
חתימה
collection(options: CollectionOptions): Collectionפרמטרים
כל פרמטרי התצורה של options תואמים לפונקציית הבנאי של מחלקת Collection, עיינו ב-Collection.
אירועים
'beforeDefineCollection': מופעל לפני הגדרת אוסף.'afterDefineCollection': מופעל לאחר הגדרת אוסף.דוגמה
getCollection()מקבל/ת אוסף שהוגדר.
חתימה
getCollection(name: string): Collectionפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
name | string | - | שם האוסף |
דוגמה
hasCollection()בודק/ת אם אוסף מסוים הוגדר.
חתימה
hasCollection(name: string): booleanפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
name | string | - | שם האוסף |
דוגמה
removeCollection()מסיר/ה אוסף שהוגדר. הוא מוסר רק מהזיכרון; כדי לשמור את השינוי, עליך לקרוא לשיטה sync.
חתימה
removeCollection(name: string): voidפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
name | string | - | שם האוסף |
אירועים
'beforeRemoveCollection': מופעל לפני הסרת אוסף.'afterRemoveCollection': מופעל לאחר הסרת אוסף.דוגמה
import()מייבא/ת את כל הקבצים בתיקייה כתצורות אוסף לזיכרון.
חתימה
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options.directory | string | - | נתיב התיקייה לייבוא |
options.extensions | string[] | ['ts', 'js'] | סריקה אחר סיומות ספציפיות |
דוגמה
האוסף המוגדר בקובץ ./collections/books.ts הוא כדלקמן:
ייבאו את התצורה הרלוונטית בעת טעינת התוסף:
registerFieldTypes()רושם/ת סוגי שדות מותאמים אישית.
חתימה
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidפרמטרים
fieldTypes הוא זוג מפתח-ערך שבו המפתח הוא שם סוג השדה והערך הוא מחלקת סוג השדה.
דוגמה
registerModels()רושם/ת מחלקות מודל נתונים מותאמות אישית.
חתימה
registerModels(models: MapOf<ModelStatic<any>>): voidפרמטרים
models הוא זוג מפתח-ערך שבו המפתח הוא שם המודל והערך הוא מחלקת המודל.
דוגמה
registerRepositories()רושם/ת מחלקות מאגר נתונים (repository) מותאמות אישית.
חתימה
registerRepositories(repositories: MapOf<RepositoryType>): voidפרמטרים
repositories הוא זוג מפתח-ערך שבו המפתח הוא שם מאגר הנתונים והערך הוא מחלקת מאגר הנתונים.
דוגמה
registerOperators()רושם/ת אופרטורים מותאמים אישית לשאילתות נתונים.
חתימה
registerOperators(operators: MapOf<OperatorFunc>)פרמטרים
operators הוא זוג מפתח-ערך שבו המפתח הוא שם האופרטור והערך הוא הפונקציה המייצרת את הצהרת ההשוואה.
דוגמה
getModel()מקבל/ת מחלקת מודל נתונים שהוגדרה. אם לא נרשמה מחלקת מודל מותאמת אישית קודם לכן, היא תחזיר את מחלקת המודל ברירת המחדל של Sequelize. שם ברירת המחדל זהה לשם האוסף שהוגדר.
חתימה
getModel(name: string): Modelפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
name | string | - | שם המודל הרשום |
דוגמה
הערה: מחלקת המודל המתקבלת מאוסף אינה זהה לחלוטין למחלקת המודל שנרשמה, אלא יורשת ממנה. מכיוון שמאפייני מחלקת המודל של Sequelize משתנים במהלך האתחול, NocoBase מטפלת באופן אוטומטי ביחס ירושה זה. למעט אי-שוויון המחלקות, כל שאר ההגדרות ניתנות לשימוש רגיל.
getRepository()מקבל/ת מחלקת מאגר נתונים (repository) מותאמת אישית. אם לא נרשמה מחלקת מאגר נתונים מותאמת אישית קודם לכן, היא תחזיר את מחלקת מאגר הנתונים ברירת המחדל של NocoBase. שם ברירת המחדל זהה לשם האוסף שהוגדר.
מחלקות מאגר נתונים משמשות בעיקר לפעולות CRUD המבוססות על מודלי נתונים, עיינו ב-מאגר נתונים.
חתימה
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): Repositoryפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
name | string | - | שם מאגר הנתונים הרשום |
relationId | string | number | - | ערך מפתח זר עבור נתונים יחסיים |
כאשר השם הוא שם אסוציאציה כמו 'tables.relations', הוא יחזיר את מחלקת מאגר הנתונים המשויכת. אם הפרמטר השני מסופק, מאגר הנתונים יתבסס על ערך המפתח הזר של הנתונים היחסיים בעת השימוש (שאילתות, עדכונים וכו').
דוגמה
נניח שיש שני אוספים, פוסטים ומחברים, ולאוסף הפוסטים יש מפתח זר המצביע על אוסף המחברים:
on()מאזין/ה לאירועי מסד נתונים.
חתימה
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
| event | string | - | שם האירוע |
| listener | Function | - | מאזין לאירוע |
שמות האירועים תומכים כברירת מחדל באירועי מודל של Sequelize. עבור אירועים גלובליים, האזינו באמצעות הפורמט <sequelize_model_global_event>, ועבור אירועי מודל בודדים, השתמשו בפורמט <model_name>.<sequelize_model_event>.
לתיאורי פרמטרים ודוגמאות מפורטות של כל סוגי האירועים המובנים, עיינו בסעיף אירועים מובנים.
off()מסיר/ה פונקציית האזנה לאירוע.
חתימה
off(name: string, listener: Function)פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
| name | string | - | שם האירוע |
| listener | Function | - | מאזין לאירוע |
דוגמה
auth()אימות חיבור למסד נתונים. ניתן להשתמש בו כדי לוודא שהיישום יצר חיבור עם הנתונים.
חתימה
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options? | Object | - | אפשרויות אימות |
options.retry? | number | 10 | מספר ניסיונות חוזרים במקרה של כשל באימות |
options.transaction? | Transaction | - | אובייקט טרנזקציה |
options.logging? | boolean | Function | false | האם להדפיס יומנים |
דוגמה
reconnect()מתחבר/ת מחדש למסד הנתונים.
דוגמה
closed()בודק/ת אם חיבור מסד הנתונים סגור.
חתימה
closed(): booleanclose()סוגר/ת את חיבור מסד הנתונים. שווה ערך ל-sequelize.close().
sync()מסנכרן/ת את מבנה אוסף מסד הנתונים. שווה ערך ל-sequelize.sync(), לפרמטרים עיינו ב-תיעוד Sequelize.
clean()מנקה/ת את מסד הנתונים, מוחק/ת את כל האוספים.
חתימה
clean(options: CleanOptions): Promise<void>פרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
options.drop | boolean | false | האם למחוק את כל האוספים |
options.skip | string[] | - | תצורת שמות אוספים לדלג עליהם |
options.transaction | Transaction | - | אובייקט טרנזקציה |
דוגמה
מסיר/ה את כל האוספים למעט אוסף users.
defineCollection()יוצר/ת את תוכן התצורה עבור אוסף.
חתימה
defineCollection(name: string, config: CollectionOptions): CollectionOptionsפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
collectionOptions | CollectionOptions | - | זהה לכל הפרמטרים של db.collection() |
דוגמה
עבור קובץ תצורת אוסף שייובא על ידי db.import():
extendCollection()מרחיב/ה את תוכן התצורה של אוסף שכבר נמצא בזיכרון, בעיקר עבור תוכן קבצים שיובאו על ידי שיטת import(). שיטה זו היא שיטה ברמה העליונה המיוצאת על ידי חבילת @nocobase/database ואינה נקראת דרך מופע db. ניתן להשתמש גם בכינוי extend.
חתימה
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsפרמטרים
| פרמטר | סוג | ערך ברירת מחדל | תיאור |
|---|---|---|---|
collectionOptions | CollectionOptions | - | זהה לכל הפרמטרים של db.collection() |
mergeOptions? | MergeOptions | - | פרמטרים עבור חבילת npm deepmerge |
דוגמה
הגדרת אוסף ספרים מקורית (books.ts):
הגדרת אוסף ספרים מורחבת (books.extend.ts):
אם שני הקבצים לעיל מיובאים בעת קריאה ל-import(), לאחר הרחבה נוספת באמצעות extend(), אוסף הספרים יכלול את השדות title ו-price.
שיטה זו שימושית מאוד להרחבת מבני אוספים שכבר הוגדרו על ידי תוספים קיימים.
מסד הנתונים מפעיל/ה את האירועים המתאימים הבאים בשלבי מחזור החיים השונים שלו. הרשמה אליהם באמצעות שיטת on() מאפשרת טיפול ספציפי כדי לעמוד בצרכים עסקיים מסוימים.
'beforeSync' / 'afterSync'מופעל לפני ואחרי סנכרון תצורת מבנה אוסף חדשה (שדות, אינדקסים וכו') למסד הנתונים. הוא מופעל בדרך כלל כאשר collection.sync() (קריאה פנימית) מבוצע, ומשמש בדרך כלל לטיפול בלוגיקה של הרחבות שדות מיוחדות.
חתימה
סוג
דוגמה
'beforeValidate' / 'afterValidate'לפני יצירה או עדכון נתונים, מתבצע תהליך אימות המבוסס על הכללים המוגדרים באוסף. אירועים מתאימים מופעלים לפני ואחרי האימות. זה מופעל כאשר repository.create() או repository.update() נקראים.
חתימה
סוג
דוגמה
'beforeCreate' / 'afterCreate'אירועים מתאימים מופעלים לפני ואחרי יצירת רשומה. זה מופעל כאשר repository.create() נקרא.
חתימה
סוג
דוגמה
'beforeUpdate' / 'afterUpdate'אירועים מתאימים מופעלים לפני ואחרי עדכון רשומה. זה מופעל כאשר repository.update() נקרא.
חתימה
סוג
דוגמה
'beforeSave' / 'afterSave'אירועים מתאימים מופעלים לפני ואחרי יצירה או עדכון רשומה. זה מופעל כאשר repository.create() או repository.update() נקראים.
חתימה
סוג
דוגמה
'beforeDestroy' / 'afterDestroy'אירועים מתאימים מופעלים לפני ואחרי מחיקת רשומה. זה מופעל כאשר repository.destroy() נקרא.
חתימה
סוג
דוגמה
'afterCreateWithAssociations'אירוע זה מופעל לאחר יצירת רשומה עם נתוני אסוציאציה היררכיים. הוא מופעל כאשר repository.create() נקרא.
חתימה
סוג
דוגמה
'afterUpdateWithAssociations'אירוע זה מופעל לאחר עדכון רשומה עם נתוני אסוציאציה היררכיים. הוא מופעל כאשר repository.update() נקרא.
חתימה
סוג
דוגמה
'afterSaveWithAssociations'אירוע זה מופעל לאחר יצירה או עדכון רשומה עם נתוני אסוציאציה היררכיים. הוא מופעל כאשר repository.create() או repository.update() נקראים.
חתימה
סוג
דוגמה
'beforeDefineCollection'מופעל לפני הגדרת אוסף, לדוגמה, כאשר db.collection() נקרא.
הערה: זהו אירוע סינכרוני.
חתימה
סוג
דוגמה
'afterDefineCollection'מופעל לאחר הגדרת אוסף, לדוגמה, כאשר db.collection() נקרא.
הערה: זהו אירוע סינכרוני.
חתימה
סוג
דוגמה
'beforeRemoveCollection' / 'afterRemoveCollection'מופעל לפני ואחרי הסרת אוסף מהזיכרון, לדוגמה, כאשר db.removeCollection() נקרא.
הערה: זהו אירוע סינכרוני.
חתימה
סוג
דוגמה