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
API Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
מטמון

@nocobase/cli

NocoBase CLI
משתני סביבה גלובליים

@nocobase/client

אפליקציה
תוסף

@nocobase/database

אוסף
שדה

interfaces

BaseInterface
אופרטורים לסינון

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
מאגר

shared

create-options
destroy-options
find-one
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (מופשט)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

מנהל מקורות נתונים
הקשר תהליך
FlowEngine
FlowModel
משאב זרימה

@nocobase/logger

יומן

@nocobase/server

AppCommand
יישום
AuditManager
הקשר
הגירה
תוסף

@nocobase/sdk

אימות
אחסון

@nocobase/telemetry

מדד
טלמטריה
Trace
Previous Page@nocobase/database
Next Pageשדה
TIP

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

#אוסף

#סקירה כללית

אוסף (Collection) משמש להגדרת מודלי נתונים במערכת, כמו שמות מודלים, שדות, אינדקסים, קשרים ומידע נוסף. בדרך כלל, קוראים לו דרך מתודת ה-collection של מופע Database כנקודת גישה.

const { Database } = require('@nocobase/database')

// יצירת מופע מסד נתונים
const db = new Database({...});

// הגדרת מודל נתונים
db.collection({
  name: 'users',
  // הגדרת שדות המודל
  fields: [
    // שדה סקלרי
    {
      name: 'name',
      type: 'string',
    },

    // שדה קשר
    {
      name: 'profile',
      type: 'hasOne' // 'hasMany', 'belongsTo', 'belongsToMany'
    }
  ],
});

לסוגי שדות נוספים, ראו Fields.

#בנאי

חתימה

  • constructor(options: CollectionOptions, context: CollectionContext)

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
options.namestring-מזהה ה-אוסף
options.tableName?string-שם טבלת מסד הנתונים. אם לא סופק, ייעשה שימוש בערך של options.name.
options.fields?FieldOptions[]-הגדרות שדות. לפרטים נוספים, ראו Field.
options.model?string | ModelStatic<Model>-טיפוס מודל של Sequelize. אם נעשה שימוש ב-string, שם המודל חייב להיות רשום מראש במסד הנתונים.
options.repository?string | RepositoryType-טיפוס רפוזיטורי (repository). אם נעשה שימוש ב-string, טיפוס הרפוזיטורי חייב להיות רשום מראש במסד הנתונים.
options.sortable?string | boolean | { name?: string; scopeKey?: string }-הגדרת שדה הניתן למיון. כברירת מחדל, אינו ניתן למיון.
options.autoGenId?booleantrueהאם ליצור מפתח ראשי ייחודי באופן אוטומטי. ברירת המחדל היא true.
context.databaseDatabase-מסד הנתונים בהקשר הנוכחי.

דוגמה

יצירת אוסף פוסטים:

const posts = new Collection(
  {
    name: 'posts',
    fields: [
      {
        type: 'string',
        name: 'title',
      },
      {
        type: 'double',
        name: 'price',
      },
    ],
  },
  {
    // מופע קיים של מסד נתונים
    database: db,
  },
);

#חברי מופע

#options

פרמטרי תצורה ראשוניים עבור האוסף. זהים לפרמטר options של הבנאי.

#context

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

#name

שם האוסף.

#db

מופע מסד הנתונים אליו הוא שייך.

#filterTargetKey

שם השדה המשמש כמפתח ראשי.

#isThrough

האם זהו אוסף ביניים.

#model

תואם לטיפוס המודל של Sequelize.

#repository

מופע רפוזיטורי.

#מתודות תצורת שדות

#getField()

מקבל את אובייקט השדה עם השם המתאים שהוגדר באוסף.

חתימה

  • getField(name: string): Field

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
namestring-שם השדה

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const field = posts.getField('title');

#setField()

מגדיר שדה עבור האוסף.

חתימה

  • setField(name: string, options: FieldOptions): Field

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
namestring-שם השדה
optionsFieldOptions-תצורת שדה. לפרטים נוספים, ראו Field.

דוגמה

const posts = db.collection({ name: 'posts' });

posts.setField('title', { type: 'string' });

#setFields()

מגדיר מספר שדות עבור האוסף בקבוצה.

חתימה

  • setFields(fields: FieldOptions[], resetFields = true): Field[]

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
fieldsFieldOptions[]-תצורת שדה. לפרטים נוספים, ראו Field.
resetFieldsbooleantrueהאם לאפס שדות קיימים.

דוגמה

const posts = db.collection({ name: 'posts' });

posts.setFields([
  { type: 'string', name: 'title' },
  { type: 'double', name: 'price' },
]);

#removeField()

מסיר את אובייקט השדה עם השם המתאים שהוגדר באוסף.

חתימה

  • removeField(name: string): void | Field

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
namestring-שם השדה

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.removeField('title');

#resetFields()

מאפס (מנקה) את השדות של האוסף.

חתימה

  • resetFields(): void

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.resetFields();

#hasField()

בודק אם אובייקט שדה עם השם המתאים מוגדר באוסף.

חתימה

  • hasField(name: string): boolean

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
namestring-שם השדה

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.hasField('title'); // true

#findField()

מוצא אובייקט שדה באוסף העונה לקריטריונים.

חתימה

  • findField(predicate: (field: Field) => boolean): Field | undefined

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
predicate(field: Field) => boolean-קריטריוני חיפוש

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.findField((field) => field.name === 'title');

#forEachField()

עובר בלולאה על אובייקטי השדות באוסף.

חתימה

  • forEachField(callback: (field: Field) => void): void

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
callback(field: Field) => void-פונקציית קריאה חוזרת (callback)

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.forEachField((field) => console.log(field.name));

#מתודות תצורת אינדקסים

#addIndex()

מוסיף אינדקס לאוסף.

חתימה

  • addIndex(index: string | string[] | { fields: string[], unique?: boolean,[key: string]: any })

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
indexstring | string[]-שם/שמות השדות לאינדוקס
index{ fields: string[], unique?: boolean, [key: string]: any }-תצורה מלאה

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.addIndex({
  fields: ['title'],
  unique: true,
});

#removeIndex()

מסיר אינדקס מהאוסף.

חתימה

  • removeIndex(fields: string[])

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
fieldsstring[]-צירוף שמות השדות עבור האינדקס שיש להסיר

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
  indexes: [
    {
      fields: ['title'],
      unique: true,
    },
  ],
});

posts.removeIndex(['title']);

#מתודות תצורת אוסף

#remove()

מוחק את האוסף.

חתימה

  • remove(): void

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

posts.remove();

#מתודות פעולות מסד נתונים

#sync()

מסנכרן את הגדרת האוסף למסד הנתונים. בנוסף ללוגיקת ברירת המחדל של Model.sync ב-Sequelize, הוא מטפל גם באוספים המתאימים לשדות קשרים.

חתימה

  • sync(): Promise<void>

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

await posts.sync();

#existsInDb()

בודק אם האוסף קיים במסד הנתונים.

חתימה

  • existsInDb(options?: Transactionable): Promise<boolean>

פרמטרים

פרמטרטיפוסברירת מחדלתיאור
options?.transactionTransaction-מופע טרנזקציה (transaction)

דוגמה

const posts = db.collection({
  name: 'posts',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

const existed = await posts.existsInDb();

console.log(existed); // false

#removeFromDb()

חתימה

  • removeFromDb(): Promise<void>

דוגמה

const books = db.collection({
  name: 'books',
});

// מסנכרן את אוסף הספרים למסד הנתונים
await db.sync();

// מסיר את אוסף הספרים ממסד הנתונים
await books.removeFromDb();