Open9

nest 構築 メモ

matsukiyomatsukiyo

Moduleを追加する

npx nest g module mongodb
  • Globalなモジュールにするには Globalデコレータをつければ良い
  • moduleのExportにはproviderのprovideをキーとして指定できる
matsukiyomatsukiyo

単一のアプリケーションの開発中にマイクロサービスも実装する場合は↓が便利
便利だけど本番では使えないパターンなので本番でどうするか要確認

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const client = app.get(MongoClient);

  app.connectMicroservice<MicroserviceOptions>({
    strategy: new MongoSubscriptionServer(client),
  });

  await app.startAllMicroservices();
  await app.listen(3000);
}
bootstrap();

https://docs.nestjs.com/faq/hybrid-application

matsukiyomatsukiyo

アクセスログを出す場合は、Expressの場合は普通にmorganを入れれば良い

matsukiyomatsukiyo

nodejsのmongodbには カスタムデータタイプをサポートする方法はなさそう… ?

matsukiyomatsukiyo

https://stackoverflow.com/questions/52969037/nestjs-dependency-injection-and-ddd-clean-architecture

nestjsでinterfaceにDIするには、同名のsymbolをExportしておく

export interface IService {
  get(): Promise<string>  
}

export const IService = Symbol("IService");
import { IService } from '../interfaces/service';

@Injectable()
export class ServiceImplementation implements IService { // Used as an interface
  get(): Promise<string> {
    return Promise.resolve(`Hello World`);
  }
}