Коллекции
При разработке плагинов NocoBase коллекция (таблица данных) является одной из ключевых концепций. Вы можете добавлять или изменять структуры таблиц данных в плагинах, определяя или расши ряя коллекции. В отличие от таблиц данных, созданных через интерфейс управления источниками данных, коллекции, определенные в коде, обычно представляют собой таблицы метаданных системного уровня и не отображаются в списке управления источниками данных.
Определение таблиц данных
Следуя стандартной структуре каталогов, файлы коллекций следует размещать в каталоге ./src/server/collections. Используйте defineCollection() для создания новых таблиц и extendCollection() для расширения существующих таблиц.
В примере выше:
name: Имя таблицы (в базе данных автоматически будет создана таблица с таким же именем).title: отображаемое название таблицы в интерфейсе.fields: набор полей; каждое поле содержитtype,nameи другие атрибуты.
Когда вам нужно добавить поля или изменить конфигурацию коллекций других плагинов, вы можете использовать extendCollection():
После активации плагина система автоматически добавит поле isPublished в существующую таблицу articles.
Обычный каталог завершит загрузку до того, как будут выполнены методы load() всех плагинов, что позволит избежать проблем с зависимостями, вызванных тем, что некоторые таблицы данных не загружаются.
Краткий справочник по типам полей
В fields метода defineCollection параметр type определяет тип колонки поля в базе данных. Ниже перечислены все встроенные типы полей:
Текст
Числа
Логический тип
Дата и время
date — наиболее часто используемый тип даты. Если необходимо различать способы обработки часовых поясов, доступны также datetimeTz (с часовым поясом) и datetimeNoTz (без часового пояса).
Структурированные данные
Генерация идентификаторов
Специальные типы
Типы связей
Поля связей не создают колонок в базе данных, а устанавливают связи между таблицами на уровне ORM:
Пример использования полей связей:
Общие параметры
Все поля-колонки поддерживают следующие параметры:
Синхронизация структуры базы данных
При первой активации плагина система автоматически синхронизирует конфигурацию коллекции со структурой базы данных. Если плагин уже установлен и запущен, после добавления или изменения коллекций необходимо вручную выполнить команду обновления:
Отображение коллекции в списке таблиц данн ых интерфейса
Таблицы, определённые через defineCollection, являются внутренними серверными таблицами и по умолчанию не отображаются в списке управления источниками данных, а также в списке выбора таблиц данных при добавлении блока.
Рекомендуемый подход: добавьте соответствующую таблицу данных в разделе «Управление источниками данных» интерфейса NocoBase. После настройки полей и типов интерфейса таблица автоматически появится в списке выбора таблиц данных блока.

Если регистрацию действительно необходимо выполнить в коде плагина (например, для демонстрационных сценариев в плагинах-примерах), можно зарегистрировать коллекцию вручную через addCollection в клиентском плагине. Обратите внимание, что регистрация должна выполняться по шаблону eventBus и не может вызываться напрямую в load() — метод ensureLoaded() после load() очищает и заново устанавливает все коллекции. Полный пример см. в разделе Создание плагина управления данными с интеграцией фронтенда и бэкенда.
Автогенерация ресурсов
После определения коллекции система автоматически сгенерирует соответствующий ресурс, в котором вы сможете напрямую выполнять CRUD-операции через API. См. Менеджер ресурсов.
Связанные ссылки
- База данных — CRUD, Repository, транзакции и события базы данных
- Менеджер источников данных — управление несколькими источниками данных и их коллекциями
- Миграция — скрипты миграции данных при обновлении плагинов
- Плагин — жизненный цикл класса Plugin, методы класса и объект
app - Менеджер ресурсов — пользовательские REST API и обработчики операций
- Создание плагина управления данными с интеграцией фронтенда и бэкенда — полный пример с defineCollection + addCollection
- Структура проекта — описание соглашения о каталоге
src/server/collections

