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)
Колекції (таблиці даних)
Операції з базою даних (Database)
Керування джерелами даних (DataSourceManager)
Керування ресурсами (ResourceManager)
Контроль доступу (ACL)
Проміжне ПЗ (Middleware)
Кеш (Cache)
Подія (Event)
Контекст запиту (Context)
Скрипт оновлення (Migration)
Логи (Logger)
Інтернаціоналізація (I18n)
Командний рядок (Command)
Керування завданнями за розкладом (CronJobManager)
Тестування (Test)

Клієнтська розробка

Огляд
Плагін (Plugin)
Контекст (Context)
Маршрутизатор (Router)
Контроль доступу (ACL)
Керування джерелами даних (DataSourceManager)
Ресурс (Resource)
Запит (Request)
Стилі та теми (Styles & Themes)
Логи (Logger)
Інтернаціоналізація (I18n)
Тестування (Test)

Інше

Посібник з оновлення плагінів
Список мов
Керування залежностями
Збірка
Previous PageПлагін (Plugin)
Next PageОперації з базою даних (Database)
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Колекції

У розробці плагінів NocoBase колекція (таблиця даних) є одним з ключових понять. Ви можете додавати або змінювати структури таблиць даних у плагінах, визначаючи або розширюючи колекції. На відміну від таблиць даних, створених через інтерфейс керування джерелами даних, колекції, визначені в коді, зазвичай є системними метаданими і не відображаються у списку керування джерелами даних.

#Визначення колекцій

Відповідно до узгодженої структури каталогів, файли колекцій слід розміщувати в каталозі ./src/server/collections. Для створення нових таблиць використовуйте defineCollection(), а для розширення існуючих — extendCollection().

import { defineCollection } from '@nocobase/database';

export default defineCollection({
  name: 'articles',
  title: 'Зразкові статті',
  fields: [
    { type: 'string', name: 'title', interface: 'input', uiSchema: { title: 'Заголовок', required: true } },
    { type: 'text', name: 'content', interface: 'textarea', uiSchema: { title: 'Текст' } },
    {
      type: 'belongsTo',
      name: 'author',
      target: 'users',
      foreignKey: 'authorId',
      interface: 'recordPicker',
      uiSchema: { title: 'Автор' },
    },
  ],
});

У наведеному вище прикладі:

  • name: Назва таблиці (у базі даних автоматично буде створено таблицю з такою ж назвою).
  • title: Назва, що відображається для цієї таблиці в інтерфейсі.
  • fields: Набір полів, кожне поле містить такі атрибути, як type, name тощо.

Якщо вам потрібно додати поля або змінити конфігурацію для колекцій інших плагінів, ви можете скористатися extendCollection():

import { extendCollection } from '@nocobase/database';

export default extendCollection({
  name: 'articles',
  fields: [
    {
      type: 'boolean',
      name: 'isPublished',
      defaultValue: false,
    },
  ],
});

Після активації плагіна система автоматично додасть поле isPublished до існуючої таблиці articles.

TIP

Узгоджений каталог завершує завантаження до виконання методів load() усіх плагінів, що дозволяє уникнути проблем із залежностями, спричинених незавантаженням деяких таблиць даних.

#Синхронізація структури бази даних

При першій активації плагіна система автоматично синхронізує конфігурації колекцій зі структурою бази даних. Якщо плагін вже встановлено та він працює, після додавання або зміни колекцій вам потрібно буде вручну виконати команду оновлення:

yarn nocobase upgrade

Якщо під час синхронізації виникнуть винятки або "брудні" дані, ви можете відновити структуру таблиці, перевстановивши застосунок:

yarn nocobase install -f

#Автоматичне генерування ресурсів

Після визначення колекції система автоматично генерує відповідний ресурс, над яким ви можете безпосередньо виконувати операції CRUD через API. Детальніше дивіться у розділі Керування ресурсами.