Коллекции

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

Определение таблиц данных

Следуя стандартной структуре каталогов, файлы коллекций следует размещать в каталоге ./src/server/collections. Используйте defineCollection() для создания новых таблиц и extendCollection() для расширения существующих таблиц.

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

export default defineCollection({
  name: 'articles',
  title: 'Sample Articles',
  fields: [
    { type: 'string', name: 'title', interface: 'input', uiSchema: { title: 'Title', required: true } },
    { type: 'text', name: 'content', interface: 'textarea', uiSchema: { title: 'Content' } },
    {
      type: 'belongsTo',
      name: 'author',
      target: 'users',
      foreignKey: 'authorId',
      interface: 'recordPicker',
      uiSchema: { title: 'Author' },
    },
  ],
});

В примере выше:

  • 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. См. Менеджер ресурсов.