🔄 Common
Commonは、正規化、アクセスチェック、ページネーション、レスポンスのために、SDKサービスやカスタムルート合成で再利用されるクロスドメインブロック、ユースルブロック、バリデーター、スキーマを文書化します。
まずはここから
エクスポートを持つSDK名前空間から共有契約をインポートします:
import {blocks, schemas, validators} from '@nodeblocks/backend-sdk';
const normalized = blocks.normalizeRawDocument({
_id: 'database-id',
id: 'public-id',
});
const requireAdmin = validators.checkIdentityType(['admin']);
const paginationParameters = schemas.paginationQueryParametersSchema;
normalizeRawDocumentはMongoDBの_idなしで不変なResultを返します;checkIdentityTypeはルートバリデーターを返します;paginationQueryParametersSchemaは再利用可能なOpenAPIクエリパラメータの配列です。
Commonはマウント可能なサービスではなく、フィーチャ、ハンドラ、ルートを定義しません。コンシューマーはblocks、schemas、validatorsを通じてパブリックエクスポートをインポートし、ドメインサービスまたはカスタムルートに合成します。ブロックはエラー、レスポンス正規化、リダイレクト、安全なパスワード生成を提供します。最初のグループはblocks/commonによってエクスポートされます。リダイレクトとパスワードヘルパーはblocks/utilsによってエクスポートされます。スキーマは共有JSONスキーマとOpenAPI定義を提供します。アドレス固有のスキーマはAddressで文書化されています。バリデーターは認証、認可、チェックの合成、所有検証を行います。バリデーターファクトリはルートペイロードを通じて設定を受け取ります。認証対応バリデーターはcontext.authenticateが提供された时使用し、そうでない場合はBearerトークン認証にフォールバックします。データベース対応バリデーターはまたcontext.db内の名前付きコレクションを必要とします。
一般的なタスク
| タスク | ここから始める | 契約 |
|---|---|---|
データを返す前にMongoDB _id を削除 | normalizeRawDocument | normalizeRawDocument または normalizeDocuments |
| 一貫性のある空レスポンスボディを生成 | normalizeEmptyBody | normalizeEmptyBody |
| 通知タイムスタンプアンカーを検証 | assertHasCreatedAt | assertHasCreatedAt |
| OAuthレスポンスをリダイレクト | redirectTo | redirectTo |
| OAuthフォールバックパスワードを生成 | generateRandomPassword | generateRandomPassword |
標準的な page と limit クエリパラメータを追加 | paginationQueryParametersSchema | paginationQueryParametersSchema |
| すべてのまたは任意のアクセスチェックを要求 | all または some | all または some |
| アイデンティティタイプまたは所有によってアクセスを制限 | checkIdentityType、isSelf、または ownsResource | checkIdentityType、isSelf、または ownsResource |
リファレンスマップ
| ページ | 目的 |
|---|---|
| Commonブロック | 共有エラー、正規化子、リダイレクト動作、パスワード生成。 |
| Commonスキーマ | ページネーション、レスポンス、ファイル、監査、連絡先定義。 |
| Commonバリデーター | 認証、アイデンティティタイプ、所有、バリデーター合成契約。 |
関連モジュール
Authenticationは共有認証・認可バリデーターを合成し、空ボディ正規化を使用します。OAuthはプロバイダーフロー中にリダイレクトと生成されたパスワードを消費します。Chatは共有ページネーションスキーマ、ドキュメント正規化、所有合成を消費します。Productはバリエーションルート用に共有ドキュメント正規化子とアクセスバリデーターを使用します。Addressはアドレスデータスキーマと郵便番号検索契約を所有しています。バックエンド型、スキーマ、バリデーターは、これらのエクスポートが使用するルートペイロードと合成契約を定義します。