[TIL]NestJS学習21日目

1490 ワード

いどう


移行は、データベース内の既存のデータを保持し、他のデータモデルと同期できる漸進的な更新モードを提供します.
また、TypeORMは、移行の作成、実行、およびリカバリのための専用CLIを提供します.
しかし、移行と「最近」は異なる概念であり、移行のライフサイクルはTypeORM CLIによって決定される.

複数のデータベース


プロジェクトの進行中に複数のデータベースを使用する必要がある場合があります.
これはモジュールによって実現できる.
const defaultOptions = {
  type: 'postgres',
  port: 5432,
  username: 'user',
  password: 'password',
  database: 'db',
  synchronize: true,
};

@Module({
  imports: [
    TypeOrmModule.forRoot({
      ...defaultOptions,
      host: 'user_db_host',
      entities: [User],
    }),
    TypeOrmModule.forRoot({
      ...defaultOptions,
      name: 'albumsConnection',
      host: 'album_db_host',
      entities: [Album],
    }),
  ],
})
export class AppModule {}
これはapp UserAlbumを接続に追加するコードです.
次いで、TypeOrmModule.forFeature()の方法を使用して、@InjectRepository()を接続する必要がある部分で使用する.

テスト


カスタムプロバイダからmock repositoryを作成できます.
登録されているrepositoryは、エンティティクラスのEntityNameを持つ<EntityName>Repository個のタグを自動的に表します.getRepositoryToken()で用意したコインを返却できます.
@Module({
  providers: [
    UsersService,
    {
      provide: getRepositoryToken(User),
      useValue: mockRepository,
    },
  ],
})
export class UsersModule {}
クラスが@InjectRepository()を使用する必要がある場合、Nestはmock Repositoryを使用します.