ResourceManager リソース管理
NocoBase のリソース管理機能は、既存のコレクションや関連(association)を自動的にリソースへ変換します。これにより、開発者は組み込みの様々な操作タイプを活用して、REST API のリソース操作を素早く構築できます。従来の REST API とは少し異なり、NocoBase のリソース操作は HTTP リクエストメソッドに依存しません。代わりに、明示的に :action を定義することで、実行する具体的な操作を決定します。
リソースの自動生成
NocoBase は、データベースで定義された collection と association を自動的にリソースへ変換します。例えば、posts と tags という2つのコレクションを定義した場合、以下のようになります。
これによって、以下のリソースが自動的に生成されます。
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() メソッドを使用して、グローバルミドルウェアを登録できます。例えば、以下のようなグローバルロギングミドルウェアを定義できます。
特有の Context プロパティ
resourceManager レイヤーのミドルウェアやアクションに入ることができるということは、そのリソースが必ず存在することを意味します。
ctx.action
ctx.action.actionName:操作名ctx.action.resourceName:コレクションまたは関連(association)である可能性がありますctx.action.params:操作パラメータ
ctx.dataSource
現在のデータソースオブジェクトです。
ctx.getCurrentRepository()
現在のリポジトリオブジェクトです。
異なるデータソースの resourceManager オブジェクトを取得する方法
resourceManager はデータソースに属しており、異なるデータソースに対して個別に操作を登録できます。
メインデータソース
メインデータソースの場合、app.resourceManager を直接使用して操作できます。
その他のデータソース
その他のデータソースの場合、dataSourceManager を介して特定のデータソースインスタンスを取得し、そのインスタンスの resourceManager を使用して操作できます。
すべてのデータソースを反復処理する
追加されたすべてのデータソースに対して同じ操作を実行する必要がある場合は、dataSourceManager.afterAddDataSource メソッドを使用して反復処理し、各データソースの resourceManager が対応する操作を登録できるようにします。

