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
المستودع (Repository)

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

Auth
التخزين

@nocobase/telemetry

المقياس
Telemetry
التتبع
Previous Page@nocobase/database
Next Pageالحقل
إشعار الترجمة بالذكاء الاصطناعي

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

#مجموعة

#نظرة عامة

تُستخدم مجموعة لتعريف نماذج البيانات في النظام، مثل أسماء النماذج، الحقول، الفهارس، والارتباطات، وغيرها من المعلومات. يتم استدعاؤها عادةً عبر طريقة 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'
    }
  ],
});

لمزيد من أنواع الحقول، يرجى الرجوع إلى الحقول.

#الدالة الإنشائية (Constructor)

التوقيع

  • constructor(options: CollectionOptions, context: CollectionContext)

المعلمات

المعلمةالنوعالقيمة الافتراضيةالوصف
options.namestring-معرف المجموعة
options.tableName?string-اسم جدول قاعدة البيانات. إذا لم يتم توفيره، فسيتم استخدام قيمة options.name.
options.fields?FieldOptions[]-تعريفات الحقول. انظر الحقل لمزيد من التفاصيل.
options.model?string | ModelStatic<Model>-نوع نموذج Sequelize. إذا تم استخدام string، فيجب أن يكون اسم النموذج قد تم تسجيله مسبقًا في قاعدة البيانات.
options.repository?string | RepositoryType-نوع المستودع. إذا تم استخدام 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-تهيئة الحقل. انظر الحقل لمزيد من التفاصيل.

مثال

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

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

#setFields()

يقوم بتعيين حقول متعددة للمجموعة دفعة واحدة.

التوقيع

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

المعلمات

المعلمةالنوعالقيمة الافتراضيةالوصف
fieldsFieldOptions[]-تهيئة الحقول. انظر الحقل لمزيد من التفاصيل.
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-دالة رد الاتصال

مثال

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-نسخة المعاملة

مثال

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();