メインコンテンツまでスキップ
バージョン: 0.9.0 (最新)

🧩️ 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);
}

🔗 関連ドキュメント