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

👤 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' } ]

🔗 関連ドキュメント