ResourceManager
Функция управления ресурсами NocoBase позволяет автоматически преобразовывать существующие таблицы данных (коллекции) и связи (ассоциации) в ресурсы. Она включает встроенные типы операций, которые помогают разработчикам быстро создавать операции с ресурсами REST API. В отличие от традиционных REST API, операции с ресурсами NocoBase не зависят от методов HTTP-запросов. Вместо этого они определяют конкретную операцию для выполнения через явное определение :action.
Автоматическая генерация ресурсов
NocoBase автоматически преобразует коллекции и ассоциации, определённые в базе данных, в ресурсы. Например, если вы определите две коллекции, posts и tags:
Это автоматически сгенерирует следующие ресурсы:
- ресурс
posts - ресурс
tags - ресурс ассоциации
posts.tags
Примеры запросов:
Операции с ресурсами NocoBase не зависят напрямую от методов запросов, а определяют действия через явное указание :action.
Операции с ресурсами
NocoBase предоставляет обширный набор встроенных типов операций для удовлетворения различных бизнес-требований.
Базовые CRUD-операции
Операции со связями
Параметры операций
К распространённым параметрам операций относятся:
filter: Условия запросаvalues: Устанавливаемые значенияfields: Указанные возвращаемые поляappends: Включение связанных данныхexcept: Исключаемые поляsort: Правила сортировкиpage,pageSize: Параметры пагинацииpaginate: Включить ли пагинациюtree: Возвращать ли древовидную структуруwhitelist,blacklist: Белый/чёрный список полейupdateAssociationValues: Обновлять ли значения связей
Пользовательские операции с ресурсами
NocoBase позволяет регистрировать дополнительные операции для существующих ресурсов. Вы можете использовать registerActionHandlers для настройки операций как для всех, так и для конкретных ресурсов.
Регистрация глобальных операций
Регистрация операций для конкретных ресурсов
Примеры запросов:
Правило именования: resourceName:actionName. При включении связей используйте точечную нотацию (posts.comments).
Пользовательские ресурсы
Если вам нужно предоставить ресурсы, не связанные с коллекциями, вы можете определить их с помощью метода resourceManager.define:
Методы запросов соответствуют автоматически сгенерированным ресурсам:
GET /api/app:getInfoPOST /api/app:getInfo(по умолчанию поддерживает как GET, так и POST)
Пользовательское промежуточное ПО
Используйте метод resourceManager.use() для регистрации глобального промежуточного ПО. Например:
Глобальное промежуточное ПО для логирования
Специальные свойства контекста
Возможность использования промежуточного ПО или действий на уровне resourceManager означает, что ресурс обязательно существует.
ctx.action
ctx.action.actionName: Название операцииctx.action.resourceName: Может быть коллекцией или ассоциациейctx.action.params: Параметры операции
ctx.dataSource
Текущий объект источника данных.
ctx.getCurrentRepository()
Текущий объект репозитория.
Как получить объекты resourceManager для разных источников данных
resourceManager принадлежит к источнику данных, и операции могут быть зарегистрированы отдельно для каждого источника данных.
Основной источник данных
Для основного источника данных вы можете напрямую использовать app.resourceManager:
Другие источники данных
Для других источников данных вы можете получить конкретный экземпляр источника данных через dataSourceManager и использовать resourceManager этого экземпляра:
Итерация по всем источникам данных
Если вам нужно выполнить одни и те же операции для всех добавленных источников данных, вы можете использовать метод dataSourceManager.afterAddDataSource для итерации, гарантируя, что resourceManager каждого источника данных сможет зарегистрировать соответствующие операции:

