🚗 ドライバー
ドライバーは、NodeBlocks サービスをデータベース、メールプロバイダー、クラウドストレージ、住所検索 API、OAuth プロバイダーなどの外部システムに接続するファクトリー関数および統合です。SDK の drivers 名前空間にあります。
インポートパターン
ドライバーはメインパッケージエントリーから名前空間としてエクスポートされます。@nodeblocks/backend-sdk/drivers というサブパスはありません。
import { drivers } from '@nodeblocks/backend-sdk';
const {
getMongoClient,
withMongo,
getSendGridClient,
setBaseUrl,
createFileStorageDriver,
createJapanPostDriver,
createGoogleOAuthDriver,
createTwitterOAuthDriver,
createLineOAuthDriver,
verifyGoogleCallback,
verifyTwitterCallback,
verifyLineCallback,
PROVIDER_GOOGLE,
PROVIDER_TWITTER,
PROVIDER_LINE,
TWITTER_CALLBACK_STATE_SESSION_KEY,
} = drivers;
同じ名前空間の型のみのエクスポート(FileStorageDriver、JapanPostDriver、SendGridMail)は型の位置で利用できます。以下の型を参照してください。
接続パターン
| パターン | 使用箇所 | 方法 |
|---|---|---|
| データストア | MongoDB(getMongoClient、withMongo) | サービスの dataStores 引数を通じてコレクションを渡します。 |
| 第 3 引数のオプション | ファイルストレージ、メール、住所検索、OAuth | { fileStorageDriver }、{ mailService }、{ findAddressDriver }、{ googleOAuthDriver, ... } を通じてドライバーを渡します。 |
ドライバーファクトリーは同期です。createFileStorageDriver、getSendGridClient、OAuth ファクトリーなどで await は不要です。withMongo(...) は完全に呼び出すと、コレクションを取得するための Promise を返します。
ドライバーモジュール
| ドライバー | 主なエクスポート | ドキュメント |
|---|---|---|
| MongoDB | getMongoClient, withMongo | データベース |
| SendGrid | getSendGridClient, setBaseUrl, SendGridMail | メールサービス |
| Google Cloud Storage | createFileStorageDriver, FileStorageDriver | ファイルストレージ |
| OAuth (Google, Twitter, LINE) | createGoogleOAuthDriver, createTwitterOAuthDriver, createLineOAuthDriver, verifyGoogleCallback, verifyTwitterCallback, verifyLineCallback, PROVIDER_GOOGLE, PROVIDER_TWITTER, PROVIDER_LINE, TWITTER_CALLBACK_STATE_SESSION_KEY | OAuth |
| Japan Post | createJapanPostDriver, JapanPostDriver | Japan Post |
SDK ソースの src/drivers/index.ts は、file-storage、japan-post、mongo、oauth、sendgrid を再エクスポートします。
利用するサービス
| ドライバーファクトリー | 注入名 | 使用箇所 |
|---|---|---|
createFileStorageDriver | fileStorageDriver | 組織サービス、プロフィールサービス、製品サービス、チャットサービス |
createJapanPostDriver | findAddressDriver | 住所サービス |
getSendGridClient | mailService | 認証サービス |
createGoogleOAuthDriver、createTwitterOAuthDriver、createLineOAuthDriver | googleOAuthDriver、twitterOAuthDriver、lineOAuthDriver | 認証サービス |
型
types 名前空間 — ドライバーで使用する共有インターフェース(SDK ソース:src/types/email.ts、src/types/oauth.ts):
import { types } from '@nodeblocks/backend-sdk';
type MailService = types.MailService;
type MailData = types.MailData;
type GoogleOAuthDriver = types.GoogleOAuthDriver;
type GoogleProfile = types.GoogleProfile;
// TwitterProfile, LineProfile, OAUTH_LOGIN, OAUTH_SIGNUP, ...
blocks 名前空間 — ドライバー注入で使用するブロック層の契約(SDK ソース:src/blocks/address.ts):
import { blocks } from '@nodeblocks/backend-sdk';
type FindAddressDriver = blocks.FindAddressDriver;
FindAddressDriver は、住所サービスでの findAddressDriver 注入の契約です。createJapanPostDriver はこのインターフェースを満たすドライバーを返します。
drivers 名前空間の型 — ファクトリーとともにエクスポートされるドライバーの戻り値型:
import type { drivers as DriverExports } from '@nodeblocks/backend-sdk';
type FileStorageDriver = DriverExports.FileStorageDriver;
type JapanPostDriver = DriverExports.JapanPostDriver;
type SendGridMail = DriverExports.SendGridMail;
| 型 | ソースファイル |
|---|---|
FileStorageDriver | src/drivers/file-storage.ts |
JapanPostDriver | src/drivers/japan-post.ts |
SendGridMail | src/drivers/sendgrid.ts |
次のステップ
- ドライバーをサービスへ接続する — 認証サービス(OAuth、メール)、住所サービス(Japan Post)、組織サービス(ファイルストレージ)を参照してください。
- 独自の MongoDB 永続化を実装する — カスタムデータストアの使用を参照してください。