🚨 typeorm 0.3 버전 이후로 없어진 EntityRepository ….
강의를 따라 기초 nestjs 공부중 첫번째 트러블에 봉착…


EntityRepository 라는게 deprecated 라고 한다.. 강의에서는 잘 되던데…
‘Entity Repository’는 더 이상 사용되지 않습니다. ….사용 되지 않습니다….
이제 막 시작한 사람에게 사용되지 않는다고 하면,,,
검색을 시작하니 나만 겪는 문제가 아니었다. 참조 블로그 - 테크놀리지넥
해당글을 읽어도, 다이나믹 모듈, 메타데이터, 데코레이터 제작 패턴 등등….. 1도 모르겠는 개념들이 나를 반긴다.
눈치는 있어 코드를 보고 어디다 붙여야 하는지에 대한 감은 있어 코드를 복사하여 나에게 맞는 위치에 붙여넣어 작동은 되게 하였는데, 이건 붙잡고 깊게 공부해야할 부분 인것 같다.
붙여넣은 코드의 전문은 다음과 같다.
// typeorm-ex.module.ts
import { DynamicModule, Provider } from "@nestjs/common";
import { getDataSourceToken } from "@nestjs/typeorm";
import { DataSource } from "typeorm";
import { TYPEORM_EX_CUSTOM_REPOSITORY } from "./typeorm-ex.decorator";
export class TypeOrmExModule {
public static forCustomRepository<T extends new (...args: any[]) => any>(repositories: T[]): DynamicModule {
const providers: Provider[] = [];
for (const repository of repositories) {
const entity = Reflect.getMetadata(TYPEORM_EX_CUSTOM_REPOSITORY, repository);
if (!entity) {
continue;
}
providers.push({
inject: [getDataSourceToken()],
provide: repository,
useFactory: (dataSource: DataSource): typeof repository => {
const baseRepository = dataSource.getRepository<any>(entity);
return new repository(baseRepository.target, baseRepository.manager, baseRepository.queryRunner);
},
});
}
return {
exports: providers,
module: TypeOrmExModule,
providers,
};
}
}
🚨 두번째 트러블 회원가입 기능을 구현하는데 db에 PK만 생성 되고, 나머지 key들이 생성되지 않는 문제..

결국 해결은 하였는데 왜 이런건지는 모르겠고, 누군가에게 물어서 알아보도록 해야겠다.
해결은 콘솔을 이리저리 찍다가. 컨트롤층의 dto에서도 콘솔이 찍히지 않아. dto를 의심 dto에 @IsNotEmpty 라는 class-validator을 입력하니 정상적으로 출력 되는 것을 볼 수 있었다.
export class AuthCredentialDto {
username : string
password : string
}
import { IsNotEmpty } from 'class-validator'
export class AuthCredentialDto {
@IsNotEmpty()
username : string
@IsNotEmpty()
password : string
}
nest 첫날부터 애매한 버그들이 힘들게 하네…