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

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

Серверная разработка

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Previous PageПлагин
Next PageОперации с базой данных
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Коллекции

В разработке плагинов 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

#Автоматическая генерация ресурсов (Resource)

После определения коллекции система автоматически генерирует для нее соответствующий ресурс, и вы можете напрямую выполнять операции CRUD над ним через API. Подробнее см. Управление ресурсами.