warning 힌트 모범 사례에 따라 * .providers.ts 접미사가 있는 별도의 파일로 사용자 지정 공급자를 선언했습니다.
그런 다음 응용 프로그램의 나머지 부분에 대해 액세스 할 수 있도록 이러한 공급자를 내 보내야합니다.
이제 우리는 @Inject()데코레이터를 사용하여 Sequelize 객체를 주입할 수 있습니다. Sequelize 비동기 공급자에 의존하는 각 클래스는 Promise가 해결될 때까지 기다립니다.
Model injection
Sequelize에서 Model은 데이터베이스의 테이블을 정의합니다. 이 클래스의 인스턴스는 데이터베이스 행을 나타냅니다. 먼저 우리는 최소한 하나의 엔티티가 필요합니다.
Cat 엔티티는 cats 디렉토리에 속합니다. 이 디렉토리는 CatsModule을 나타냅니다. 이제 저장소 공급자를 만들 차례입니다.
힌트 실제 응용 프로그램에서는 매직 문자열을 피해야 합니다. CATS_REPOSITORY와 SEQUELIZE는 모두 분리 된 constants.ts 파일에 보관해야 합니다.
Sequelize에서는 정적 메서드를 사용하여 데이터를 조작하므로 여기에 별명(alias)을 만들었습니다.
이제 @Inject()데코레이터를 사용하여 CATS_REPOSITORY를 CatsService에 삽입할 수 있습니다.
데이터베이스 연결은 비동기이지만 Nest는 최종 사용자가 이 프로세스를 완전히 볼 수 없도록 합니다. CATS_REPOSITORY 제공자는 db 연결을 기다리고 있으며 CatsService는 저장소를 사용할 준비가 될 때까지 지연됩니다. 각 클래스가 인스턴스화 되면 전체 응용 프로그램을 시작할 수 있습니다.
마지막CatsModule은 다음과 같습니다.
warning 힌트CatsModule을 루트 ApplicationModule로 가져 오는 것을 잊지 마십시오.