تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
يمثل هذا القسم فئة إدارة حقول المجموعة (فئة مجردة). وهي أيضًا الفئة الأساسية لجميع أنواع الحقول، حيث يتم تنفيذ أي نوع حقل آخر عن طريق وراثة هذه الفئة.
لمعرفة كيفية تخصيص الحقول، يرجى الرجوع إلى [توسيع أنواع الحقول].
عادةً لا يتم استدعاؤها مباشرةً من قبل المطورين، بل يتم استدعاؤها بشكل أساسي عبر الدالة db.collection({ fields: [] }) كمدخل وكيل.
عند توسيع حقل، يتم تنفيذ ذلك بشكل أساسي عن طريق وراثة الفئة المجردة Field ثم تسجيلها في مثيل Database.
التوقيع
constructor(options: FieldOptions, context: FieldContext)المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
options | FieldOptions | - | كائن تهيئة الحقل |
options.name | string | - | اسم الحقل |
options.type | string | - | نوع الحقل، والذي يتوافق مع اسم نوع الحقل المسجل في قاعدة البيانات (db). |
context | FieldContext | - | كائن سياق الحقل |
context.database | Database | - | مثيل قاعدة البيانات |
context.collection | Collection | - | مثيل المجموعة |
nameاسم الحقل.
typeنوع الحقل.
dataTypeنوع تخزين الحقل في قاعدة البيانات.
optionsمعلمات تهيئة الحقل.
contextكائن سياق الحقل.
on()طريقة تعريف مختصرة تعتمد على أحداث المجموعة. تعادل db.on(this.collection.name + '.' + eventName, listener).
عادةً لا يكون من الضروري تجاوز هذه الدالة عند الوراثة.
التوقيع
on(eventName: string, listener: (...args: any[]) => void)المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
eventName | string | - | اسم الحدث |
listener | (...args: any[]) => void | - | مستمع الحدث |
off()طريقة إزالة مختصرة تعتمد على أحداث المجموعة. تعادل db.off(this.collection.name + '.' + eventName, listener).
عادةً لا يكون من الضروري تجاوز هذه الدالة عند الوراثة.
التوقيع
off(eventName: string, listener: (...args: any[]) => void)المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
eventName | string | - | اسم الحدث |
listener | (...args: any[]) => void | - | مستمع الحدث |
bind()المحتوى الذي يتم تنفيذه عند إضافة حقل إلى مجموعة. يُستخدم عادةً لإضافة مستمعي أحداث المجموعة ومعالجات أخرى.
عند الوراثة، يجب استدعاء الدالة super.bind() المقابلة أولاً.
التوقيع
bind()unbind()المحتوى الذي يتم تنفيذه عند إزالة حقل من مجموعة. يُستخدم عادةً لإزالة مستمعي أحداث المجموعة ومعالجات أخرى.
عند الوراثة، يجب استدعاء الدالة super.unbind() المقابلة أولاً.
التوقيع
unbind()get()يحصل على قيمة عنصر تهيئة الحقل.
التوقيع
get(key: string): anyالمعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
key | string | - | اسم عنصر التهيئة |
مثال
merge()يدمج قيم عناصر تهيئة الحقل.
التوقيع
merge(options: { [key: string]: any }): voidالمعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
options | { [key: string]: any } | - | كائن عناصر التهيئة المراد دمجها |
مثال
remove()يزيل الحقل من المجموعة (من الذاكرة فقط).
مثال
removeFromDb()يزيل الحقل من قاعدة البيانات.
التوقيع
removeFromDb(options?: Transactionable): Promise<void>المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
options.transaction? | Transaction | - | مثيل المعاملة |
existsInDb()يحدد ما إذا كان الحقل موجودًا في قاعدة البيانات.
التوقيع
existsInDb(options?: Transactionable): Promise<boolean>المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
options.transaction? | Transaction | - | مثيل المعاملة |
تتضمن NocoBase بعض أنواع الحقول الشائعة الاستخدام، ويمكنك استخدام اسم النوع المقابل مباشرةً لتحديد النوع عند تعريف الحقول للمجموعة. تختلف تهيئة معلمات الحقول باختلاف أنواعها، يرجى الرجوع إلى القائمة أدناه للحصول على التفاصيل.
سيتم تمرير جميع عناصر تهيئة أنواع الحقول، باستثناء تلك المذكورة أدناه، إلى Sequelize. لذا، يمكن استخدام جميع عناصر تهيئة الحقول التي يدعمها Sequelize هنا (مثل allowNull، defaultValue، وما إلى ذلك).
بالإضافة إلى ذلك، تعالج أنواع الحقول من جانب الخادم بشكل أساسي مشكلات تخزين قاعدة البيانات وبعض الخوارزميات، وهي غير مرتبطة بشكل أساسي بأنواع عرض الحقول والمكونات المستخدمة في الواجهة الأمامية. لأنواع حقول الواجهة الأمامية، يرجى الرجوع إلى إرشادات البرنامج التعليمي ذات الصلة.
'boolean'نوع القيمة المنطقية.
مثال
'integer'نوع العدد الصحيح (32 بت).
مثال
'bigInt'نوع العدد الصحيح الكبير (64 بت).
مثال
'double'نوع الفاصلة العائمة مزدوجة الدقة (64 بت).
مثال
'real'نوع الأعداد الحقيقية (ينطبق على PostgreSQL فقط).
'decimal'نوع الأعداد العشرية.
'string'نوع السلسلة النصية. يعادل نوع VARCHAR في معظم قواعد البيانات.
مثال
'text'نوع النص. يعادل نوع TEXT في معظم قواعد البيانات.
مثال
'password'نوع كلمة المرور (امتداد NocoBase). يقوم بتشفير كلمات المرور بناءً على دالة scrypt من حزمة crypto الأصلية في Node.js.
مثال
المعلمات
| المعلمة | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
length | number | 64 | طول الأحرف |
randomBytesSize | number | 8 | حجم البايتات العشوائية |
'date'نوع التاريخ.
'time'نوع الوقت.
'array'نوع المصفوفة (ينطبق على PostgreSQL فقط).
'json'نوع JSON.
'jsonb'نوع JSONB (ينطبق على PostgreSQL فقط، وسيتم التعامل مع الأنواع الأخرى كنوع 'json' للملاءمة).
'uuid'نوع UUID.
'uid'نوع UID (امتداد NocoBase). نوع معرف سلسلة نصية عشوائية قصيرة.
'formula'نوع الصيغة (امتداد NocoBase). يمكن تهيئته لإجراء حسابات صيغ رياضية بناءً على mathjs، حيث يمكن للصيغة الإشارة إلى قيم الأعمدة الأخرى في نفس السجل للمشاركة في الحساب.
مثال
'radio'نوع الاختيار الفردي (امتداد NocoBase). يمكن أن تحتوي المجموعة بأكملها على صف واحد كحد أقصى تكون قيمة هذا الحقل فيه true، بينما تكون جميع القيم الأخرى false أو null.
مثال
يوجد مستخدم واحد فقط في النظام بأكمله تم وضع علامة "root" عليه. بعد تغيير قيمة "root" لأي مستخدم آخر إلى true، سيتم تغيير جميع السجلات الأخرى التي كانت قيمة "root" فيها true إلى false:
'sort'نوع الفرز (امتداد NocoBase). يقوم بالفرز بناءً على أرقام صحيحة، ويُنشئ تلقائيًا رقم تسلسليًا جديدًا للسجلات الجديدة، ويعيد ترتيب الأرقام التسلسلية عند نقل البيانات.
إذا قامت المجموعة بتعريف خيار sortable، فسيتم إنشاء حقل مقابل تلقائيًا أيضًا.
مثال
يمكن فرز المقالات بناءً على المستخدم الذي تنتمي إليه:
'virtual'نوع افتراضي. لا يقوم بتخزين البيانات فعليًا، ويُستخدم فقط عند تعريف getter/setter خاص.
'belongsTo'نوع الارتباط من متعدد إلى واحد. يتم تخزين المفتاح الأجنبي في جدولها الخاص، على عكس hasOne/hasMany.
مثال
أي مقال ينتمي إلى مؤلف معين:
'hasOne'نوع الارتباط من واحد إلى واحد. يتم تخزين المفتاح الأجنبي في المجموعة المرتبطة، على عكس belongsTo.
مثال
كل مستخدم لديه ملف شخصي واحد:
'hasMany'نوع الارتباط من واحد إلى متعدد. يتم تخزين المفتاح الأجنبي في المجموعة المرتبطة، على عكس belongsTo.
مثال
يمكن لأي مستخدم أن يمتلك عدة مقالات:
'belongsToMany'نوع الارتباط من متعدد إلى متعدد. يستخدم مجموعة وسيطة لتخزين المفاتيح الأجنبية للطرفين. إذا لم يتم تحديد مجموعة موجودة كـ مجموعة وسيطة، فسيتم إنشاء مجموعة وسيطة تلقائيًا.
مثال
يمكن لأي مقال أن يحتوي على عدة وسوم، ويمكن لأي وسم أن يُضاف إلى عدة مقالات: