ユーザーアイコン

mizuko

3か月前

0
0

Nest.jsでDDDを行う

CleanArchitecture
Nest.js
アーキテクチャ
DDD

Nest.jsでDDDを実現するために、以下方針で進めた。 ディレクトリ構成は、よくある構成のため割愛(ほぼこの構成)

  • 基本app.module.tsというファイルで一元管理して、DIコンテナとして運用する
  • databaseの設定に関してはmoduleとして定義し、app.moduleでimportする
  • テスト用のmoduleは別で定義し、テスト用のDBに接続などする

@Module({ imports: [ DBModule, PassportModule.register({ defaultStrategy: 'jwt' }), ], controllers: [ AdminController, UserController, ], providers: [ JwtStrategy, UserService, { provide: moduleConst.USER_REPOSITORY, useClass: UserRepository, }, { provide: moduleConst.ROLE_REPOSITORY, useClass: RoleRepository, }, ], }) export class AppModule {}

良かった点

  • app.moduleがDIコンテナの役割を担ってくれているので、管理が簡単
  • ディレクトリ構造がDDDになるので、どこに何を定義すべきか迷わなくなり、実装が楽