👤 User ブロック
User ブロックは、NodeBlocks アプリケーションにおけるユーザー操作のための純粋なビジネスロジック関数を提供します。これらのブロックには、ユーザーの取得と API レスポンスのためのユーザーデータのフォーマットに関するコアロジックが含まれます。
🎯 概要
User ブロックは以下を目的として設計されています:
- ペイロード処理からビジネスロジックを分離
- 必要なデータのみを受け取る純粋な関数を提供
- 隔離されたロジックによる簡単なテストを有効化
- 適切なエラーハンドリングのための Result タイプを返す
- 安全な API 露出のために MongoDB データを正規化
📋 User ブロックタイプ
User 取得ブロック
ユーザー情報を取得するための純粋な関数。
User 正規化ブロック
API レスポンスのためのユーザーデータをフォーマットするための純粋な関数。
🔧 利用可能な User ブロック
getUserById
ID によって単一のユーザーを取得します。
目的: 存在検証付きでユーザーデータを取得
パラメータ:
logger: Logger
— エラーメソッド付きの Logger インスタンスdb: Collection
— ユーザー/プロファイルのための MongoDB コレクションprofileId: string
— ユーザー/プロファイル識別子
返却値: Promise<Result<WithId<Document> | null, Error>>
ハンドラープロセス:
- 入力: データベースコレクションとユーザー ID 文字列
- プロセス: 一致する ID のユーザーをデータベースに問い合わせ、存在を検証
- 出力: ユーザーオブジェクトまたはエラー
使用例:
import { blocks } from '@nodeblocks/backend-sdk';
const result = await blocks.getUserById(logger, db.profiles, 'user-123');
if (result.isOk()) {
const user = result.value;
}
normalizeUser
API レスポンスフォーマットのためにユーザーオブジェクトから MongoDB _id
フィールドを削除します。
目的: MongoDB 内部の _id
フィールドのないクリーンなユーザーオブジェクトを返す
パラメータ:
user: T
— MongoDB_id
を含む可能性のあるユーザーオブジェクト
返却値: Result<Omit<T, '_id'>, Error>
レスポンスフォーマット:
- 入力: MongoDB
_id
フィールドを含むユーザーデータの Result - 処理: オブジェクトスプレッドを使用して
_id
フィールドを分解して削除 - 出力:
_id
のないクリーンなユーザーオブジェクト
使用例:
import { blocks } from '@nodeblocks/backend-sdk';
const result = blocks.normalizeUser({ _id: 'mongoId', id: 'user-1', name: 'Alice' });
// result.value → { id: 'user-1', name: 'Alice' }
normalizeUsers
MongoDB _id
フィールドを削除することで、API レスポンスのためのユーザーオブジェクトの配列をフォーマットします。
目的: MongoDB 内部の _id
フィールドを除外したユーザーオブジェクトの配列を返す
パラメータ:
objects: T[]
— MongoDB_id
フィールドを含むユーザーオブジェクトの配列
返却値: Result<Omit<T, '_id'>[], Error>
レスポンスフォーマット:
- 入力: MongoDB
_id
フィールドを含むユーザーオブジェクトの配列 - 処理: 配列をマップして各オブジェクトから
_id
を削除 - 出力:
_id
のないクリーンなユーザーオブジェクトの配列
使用例:
import { blocks } from '@nodeblocks/backend-sdk';
const result = blocks.normalizeUsers([
{ _id: '1', id: 'user-1', name: 'Alice' },
{ _id: '2', id: 'user-2', name: 'Bob' },
]);
// result.value → [ { id: 'user-1', name: 'Alice' }, { id: 'user-2', name: 'Bob' } ]
🔗 関連ドキュメント
- User スキーマ — ユーザー検証スキーマ
- User ハンドラー — ユーザー業務ロジック関数
- User ルート — HTTP エンドポイント定義
- User 機能 — 構成されたユーザー機能
- User バリデーター — ユーザーアクセス制御と検証関数