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

🛠️ サービス

Nodeblocksバックエンドは、特定のビジネスロジックとデータの部分を担当するモジュールサービスで構成されています。
すべてのサービスは同じ規則に従うため、統合、拡張、または交換が簡単です。


🔍 Serviceとは何ですか?

serviceは、1つ以上のfeatures(ルート、スキーマ、handlersを含むユースケースバンドル)を囲む薄いラッパーです。
実行時に、ラッパーは依存関係(例:MongoDBコレクション)を配線し、コードから呼び出すことができる型付きインターフェースを公開するか、提供されたルーターユーティリティを通じてHTTPおよびWebSocketエンドポイントに自動的にマッピングします。

┌─────────────┐
│ Service │ userService(db)
├─────────────┤
│ Features ▷ createUserFeature
│ ▷ getUserFeatures
│ ▷ editUserFeatures
│ ▷ ...
└─────────────┘

主要なポイント:

  1. Pure functions – グローバル状態なし、すべての依存関係が明示的に渡されます(テストに最適!)。
  2. Composable – サービス間でfeaturesを再利用/合成するか、独自に構築します。
  3. Database-agnosticCollectionインターフェースのみが必要です。テストではMongoをスタブに交換できます。

📑 利用可能なサービス

サービスNPM import責任ドキュメント
AuthenticationauthServiceユーザー認証(登録、ログイン、ログアウト、JWTトークン)Docs »
UseruserServiceアプリケーションユーザーの管理(CRUD)Docs »
IdentityidentitiesServiceライフサイクル操作(CRUD、ロック/アンロック、セキュリティ)を含むアイデンティティエンティティの管理Docs »
OrganizationorganizationService組織/ワークスペースの作成と管理Docs »
ProductproductServiceバッチ操作とコピー操作を含む複雑な製品管理Docs »
AttributeattributeServiceキー値属性と属性グループの管理Docs »
CategorycategoryService製品またはコンテンツカテゴリの維持Docs »
LocationlocationService親子関係を持つ階層的な場所の管理Docs »
OrderorderServiceアイテムと価格設定を含むEコマース注文管理Docs »
ChatchatServiceチャネル、サブスクリプション、メッセージを含むリアルタイムメッセージングDocs »

ℹ️ すべてのサービスは、ライブAPIエンドポイントでテストされ、包括的なBrunoテストスイートが含まれています。SDKには時間の経過とともにさらに多くのサービスが追加されます。提案については、issueまたはPRを開いてください!


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

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

import express from 'express';

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

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

const connectToDatabase = withMongo('mongodb://localhost:27017', 'dev', 'user', 'password');

express()
.use(
userService(
{
...(await connectToDatabase('users')),
...(await connectToDatabase('identity')),
},
{
authSecrets: {
authEncSecret: 'your-encryption-secret',
authSignSecret: 'your-signing-secret',
},
},
{
// オプションのドライバー(必要な場合)
// mailService,
// fileStorageDriver,
// googleOAuthDriver,
}
)
)
.use(nodeBlocksErrorMiddleware())
.listen(8089, () => console.log('Server running'));

📐 設計原則

Single responsibility – 各サービスは1つのドメインエンティティを対象とします。
Extensibility first – コードベースをフォークせずにfeaturesを合成、オーバーライド、または装飾します。


➡️ 次へ

ユーザー認証についてはAuthentication Serviceから始めるか、ニーズに基づいて他のサービスを探索してください。リアルタイム機能については、WebSocket Service Guideを確認してください。すべてのサービスは同じパターンと規則に従います!