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

🛠️ サービス

NodeBlocksバックエンドは、モジュール化されたサービスで構成されており、それぞれが特定のビジネスロジックとデータのピースを担当します。 すべてのサービスが同じ規則に従うため、統合、拡張、または交換が容易に行えます。


🔍 サービスとは何ですか?

サービスは、1つ以上の機能(ルート、スキーマ、ハンドラーを含むユースケースバンドル)の薄いラッパーです。 実行時に、ラッパーは依存関係(例:MongoDBコレクション)を接続し、コードから呼び出せる型付きインターフェースを公開したり、提供されたルーターユーティリティを通じてHTTPエンドポイントに自動的にマッピングしたりします。

┌─────────────┐
│ サービス │ userService(db)
├─────────────┤
│ 機能 ▷ createUserFeature
│ ▷ getUserFeatures
│ ▷ editUserFeatures
│ ▷ ...
└─────────────┘

主要なポイント:

  1. 純粋関数 – グローバル状態なし、すべての依存関係が明示的に渡されます(テストに最適!)。
  2. 合成可能 – サービス間で機能を再利用/合成するか、自分で構築します。
  3. データベース非依存Collectionインターフェースのみが必要。テストでMongoをスタブに交換可能。

📑 利用可能なサービス

サービスNPMインポート責任ドキュメント
AuthenticationauthServiceユーザー認証(登録、ログイン、ログアウト、JWTトークン)Docs »
UseruserServiceアプリケーションユーザーの管理(CRUD、ロック/ロック解除)Docs »
OrganizationorganizationService組織/ワークスペースの作成と管理Docs »
ProductproductService複雑な製品管理(バッチ操作、コピー操作を含む)Docs »
CategorycategoryService製品またはコンテンツのカテゴリの維持Docs »
AttributeattributeServiceキー値属性と属性グループの管理Docs »
OrderorderServiceアイテムと価格を含むEコマース注文管理Docs »
ChatchatServiceチャンネル、サブスクリプション、メッセージによるリアルタイムメッセージングDocs »

ℹ️ すべてのサービスはライブAPIエンドポイントでテストされており、包括的なBrunoテストスイートが含まれています。SDKにさらにサービスが追加される予定です。提案があれば、ぜひIssueやPRを開いてください!


🧑‍💻 サービスをプログラムで使用

すべてのサービスは同じ署名を共有します:名前付きコレクションを持つデータベースオブジェクト、設定、オプションのドライバー(メール/ファイルストレージ/OAuth)を受け取り、Expressルーターを返すファクトリ関数です。

import express from 'express';
import { MongoClient } from 'mongodb';

import { middlewares, services } from '@nodeblocks/backend-sdk';

const { nodeBlocksErrorMiddleware } = middlewares;
const { userService } = services;

const client = new MongoClient('mongodb://localhost:27017').db('dev');

express()
.use(
userService(
{
users: client.collection('users'),
identity: client.collection('identity'),
},
{
authSecrets: {
authEncSecret: 'your-encryption-secret',
authSignSecret: 'your-signing-secret',
},
},
{
// Optional drivers (when needed)
// mailService,
// fileStorageDriver,
// googleOAuthDriver,
}
)
)
.use(nodeBlocksErrorMiddleware())
.listen(8089, () => console.log('Server running'));

📐 設計原則

単一責任 – 各サービスは1つのドメインエンティティを対象とします。 • 拡張性優先 – コードベースをフォークすることなく、機能を合成、オーバーライド、またはデコレートします。


➡️ 次へ

ユーザー認証のためのAuthentication Serviceから始め、またはニーズに基づいて他のサービスを探索してください。すべてのサービスは同じパターンと規則に従います!