🧱 Mongoブロック
Mongoブロックは、@nodeblocks/backend-sdk の blocks からエクスポートされる再利用可能なクエリヘルパーです。呼出元が指定したMongoDB Collection で動作し、HTTPレスポンスではなく neverthrow の Result 値を返し、他のモジュールによってルートパイプラインに構成されます。
インベントリ
| エクスポート | 種別 | 入力 | 結果 / 動作 / エラー |
|---|---|---|---|
findResources | 非同期クエリブロック | Collection、{ filter, options? }、BlockErrorConstructor、メッセージ | ok(Document[])、または find または toArray がthrowした場合に err(new errorClass(errorMessage))。 |
buildWithoutMongoIdFindOptions | 純粋なオプションビルダー | なし | ok({ projection: { _id: 0 } }); エラーとならない。 |
詳細
findResources
実装
シグネチャ: findResources(collection, { filter, options? }, errorClass, errorMessage): Promise<Result<Document[], BlockError>>。渡されたままの collection.find(options.filter, options.options) を呼び出し、toArray() を待機する。投影、ページネーション、正規化、フィルター、ソート、デフォルトクエリオプションを追加しない; 責任は完全に呼出元にある。
成功時は MongoDBカーソルからのドキュメント配列である result を含む ok(result) を返す。find または toArray のいずれかがthrowした場合、err(new errorClass(errorMessage)) を返す。errorClass は1つの文字列から BlockError を構築する必要がある; キャッチされたデータベースエラーは返されるエラーに含まれない。空のクエリ結果は成功した ok([]) である。
findOrders、findProfiles、findNotifications、findProductResources で使用される。各ラッパーは独自のコレクション、エラークラス、メッセージを提供する。
buildWithoutMongoIdFindOptions
実装
シグネチャ: buildWithoutMongoIdFindOptions(): Result<{ projection: { _id: 0 } }, never>。同期して ok({ projection: { _id: 0 } }) を返し、後続のクエリによって選択されたドキュメントから _id を削除するMongoDB互換の FindOptions プロジェクションを返す。クエリを実行せず、MongoDBから既に取得された結果を変換しない。
入力もエラーパスもない。ルートパイプラインは成功した値を後続のクエリブロックへのオプション引数として渡さなければならない。findProfilesByIdentityIdRoute および getProfileFollowersRoute、findOrdersByOrganizationIdRoute、findProductsByOrganizationIdRoute および getProductLikersRoute、getOrganizationFollowersRoute のソースパイプラインで使用される。