Менеджер ресурсов (ResourceManager)
Функция управления ресурсами в NocoBase автоматически преобразует существующие коллекции и связи в ресурсы, а встроенные типы операций помогают разработчикам быстро строить REST API-операции над ресурсами. В отличие от традиционных REST API, операции с ресурсами в NocoBase не зависят от HTTP-метода запроса, а определяются через явное указание :action.
Автогенерация ресурсов
NocoBase автоматически преобразует collection и association, определенные в базе данных, в ресурсы. Например, если определить две коллекции — 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 каждого источника можно зарегистрировать соответствующие операции:

