🧩️ Mongoブロック
Mongoブロックは、NodeBlocksアプリケーションでMongoDB操作用の純粋なビジネスロジック関数を提供します。これらのブロックにはコアデータベースロジックが含まれており、ペイロードコンテキストリフティングのためにapplyPayloadArgsと共に使用するように設計されています。
🎯 概要
Mongoブロックは以下の目的で設計されています:
- ペイロード処理からデータベースロジックを分離します
- 必要なデータのみを受け取る純粋な関数を提供します
- 分離されたロジックで簡単なテストを可能にします
- ペイロードコンテキストリフティングによる合成をサポートします
- 適切なエラーハンドリングのためにResult型を返します
- 標準化されたエラーハンドリングでMongoDB固有の操作を処理します
📋 Mongoブロックタイプ
データベースクエリブロック
MongoDBコレクションをクエリするための純粋な関数。
クエリオプションブロック
MongoDBクエリオプションを構築するための純粋な関数。
🔧 利用可能なMongoブロック
findResources
エラーハンドリングを含むMongoDBコレクションから複数のドキュメントを取得します。
目的: 適切なエラーハンドリングとフィールド投影を含むMongoDB findクエリを実行し、ドキュメントの配列または適切なエラーを返します。
パラメータ:
collection: Collection- クエリするMongoDBコレクションインスタンスoptions: { filter: Filter<Document>; options?: FindOptions }- フィルタ基準とオプションのfindオプションerrorClass: BlockErrorConstructor- カスタムエラーハンドリング用のエラーコンストラクタクラスerrorMessage: string- 操作が失敗した場合に表示するエラーメッセージ
戻り値: Promise<Result<Document[], BlockError>> - ドキュメントの配列またはエラーを含むResult
処理プロセス:
- 入力: MongoDBコレクション、フィルタ基準、エラークラス、およびエラーメッセージ
- 処理:
_idフィールドを除外する投影を使用してfindクエリを実行し、カーソルを配列に変換 - 出力: ドキュメントの配列またはエラー
- エラー: データベース操作が失敗した場合、カスタムBlockErrorを返す
使用例:
import { blocks } from '@nodeblocks/backend-sdk';
const { findResources } = blocks;
// Used in route composition:
const findUsersRoute = withRoute({
handler: applyPayloadArgs(
findResources,
[
['context', 'db', 'users'],
['params', 'requestQuery'],
DatabaseError,
'Failed to retrieve users'
]
)
});
// Find all users with specific criteria:
const result = await findResources(
usersCollection,
{ filter: { status: 'active' } },
DatabaseError,
'Failed to retrieve users'
);
if (result.isOk()) {
const users = result.value;
// Process found users
}
buildWithoutMongoIdFindOptions
クエリ結果から_idフィールドを除外するMongoDB findオプションを構築します。
目的: MongoDBのデフォルト_idフィールドをクエリ結果から除外する投影オプションを作成し、クリーンなAPIレスポンスを確保します。
パラメータ: なし
戻り値: Result<{ projection: { _id: 0 } }, never> - MongoDB投影オプションを含むResult
処理プロセス:
- 入力: パラメータ不要
- 処理: MongoDBのデフォルト
_idフィールドを除外する投影オプションを作成 - 出力:
_id: 0を含む投影設定 - エラー: 失敗しない(常にok結果を返す)
使用例:
import { blocks } from '@nodeblocks/backend-sdk';
const { buildWithoutMongoIdFindOptions } = blocks;
// Used in route composition:
const findUsersRoute = withRoute({
handler: compose(
applyPayloadArgs(
buildWithoutMongoIdFindOptions,
[],
'options'
),
applyPayloadArgs(
findResources,
[
['context', 'db', 'users'],
['params', 'requestQuery'],
['context', 'data', 'options']
]
)
)
});
// Use in MongoDB queries to exclude _id field:
const options = buildWithoutMongoIdFindOptions();
if (options.isOk()) {
const users = await collection.find({}, options.value);
}
🔗 関連ドキュメント
- Mongo概要 - MongoDBブロック概要