inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tìm hiểu NestJS bằng cách làm theo

Thực hiện chức năng đăng ký thành viên

회원가입 기능 구현 버전 변경에 따른 코드수정(해당 사항은 업데이트 예정이 없나요?)

Đã giải quyết

71

rladygks1210

4 câu hỏi đã được viết

0

Custom Repository 부분에서 에러가 나서 해결 하긴 하였으나 맞는 과정인지는 잘 몰라 문의드립니다.

강의에서 사용하는 @EntityRepository방식은 구버전(0.2.x) 방식으로 최신버전에서는 제거되었습니다. 강의 코드를 그대로 따라하면 ... is not a function같은 에러가 발생합니다.

그래서

user.repository.ts, auth.modules.ts 수정, auth.service.ts를 수정

 1. user.repository.ts 수정 1. user.repository.ts 수정 Repository를 일반 서비스로 만들기 위한 핵심 작업입니다. 수정 내용: @EntityRepository(User) 데코레이터를 삭제하고 @Injectable()을 추가했습니다. Repository 클래스를 초기화하기 위해 constructor (생성자)를 추가하고, 그 안에서 super()를 호출했습니다.

// src/auth/user.repository.ts
import { Injectable } from '@nestjs/common';
import { DataSource, Repository } from 'typeorm';
import { User } from './user.entity';
// ...

@Injectable() // ✅ 변경
export class UserRepository extends Repository<User> {
  // ✅ 생성자 추가
  constructor(private dataSource: DataSource) {
    super(User, dataSource.createEntityManager());
  }

  async createUser(/* ... */): Promise<void> {
    // ...
  }
}

2. auth.service.ts 수정
-> providers 배열에 UserRepository를 추가했습니다.

이유: providers 배열에 등록해야만 AuthModule이 "아, UserRepository라는 서비스를 모듈로 포함시켰습니다.

// src/auth/auth.module.ts
import { UserRepository } from './user.repository';
// ...

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  controllers: [AuthController],
  providers: [
    AuthService,
    UserRepository, // ✅ UserRepository를 providers에 등록
  ],
})
export class AuthModule {}

3.auth.service.ts 수정

> 서비스에서 Repository를 주입받는 방식을 변경합니다.

수정 내용: @InjectRepository(User) 데코레이터를 삭제하고, 생성자에서 UserRepository를 직접 타입으로 선언하여 주입받습니다.

이유: UserRepository는 이제 마법 같은 존재가 아닌 일반 서비스이므로, 다른 서비스를 주입받을 때와 똑같이 클래스 이름만으로 간단하게 주입받을수 있습니다.

// src/auth/auth.service.ts
import { Injectable } from '@nestjs/common';
import { UserRepository } from './user.repository';
// 🗑️ import { InjectRepository } from '@nestjs/typeorm'; <- 삭제

@Injectable()
export class AuthService {
  constructor(
    // 🗑️ @InjectRepository(User) <- 삭제
    private userRepository: UserRepository, // ✅ 직접 주입
  ) {}

  async signUp(/* ... */): Promise<void> {
    return this.userRepository.createUser(/* ... */);
  }
}

일단 이런식으로 수정했는데 이 과정이 맞는지는 잘 모르겠습니다! 강사님이나 따로 혹시 올라와 있는 코드가 있다면 참고해보겠습니다!

postgresql jwt nestjs typeorm

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
rladygks1210님께서 질문하신 내용을 기반으로 해결 과정을 살펴보겠습니다. NestJS 프레임워크와 TypeORM의 최신 버전에서는 @EntityRepository 데코레이터가 더 이상 지원되지 않으며, 사용자 정의 리포지토리는 일반적인 서비스로 구현하는 것이 올바른 과정입니다.

제공해주신 코드 수정 방법에 대한 피드백을 드리자면:
1. user.repository.ts에서 @EntityRepository@Injectable로 대체하고, 생성자에 super(User, dataSource.createEntityManager())를 호출하여 Repository를 초기화하는 방식은 맞습니다. 이 방법으로 UserRepository를 일반 서비스로 등록할 수 있습니다.

  1. auth.module.ts 파일에서 UserRepositoryproviders에 등록한 것은 올바른 설정입니다. 이렇게 함으로써 NestJS의 DI(Dependency Injection) 시스템에서 이 서비스를 사용할 수 있습니다.

  2. auth.service.ts에서는 @InjectRepository를 사용하지 않고 UserRepository를 직접 주입받는 것이 최신 방식에 부합합니다. 이는 NestJS에서 일반적인 서비스 주입 방식과 동일하므로 맞는 접근입니다.

제거된 데코레이터의 사용 방식에 대해 더 많은 예제나 자료가 있을 경우, 강의 제공자에게 업데이트된 자료로 요청드릴 수 있습니다. 현재로서는 제공해주신 방법이 NestJS와 TypeORM의 최신 관행에 맞는 수정입니다.

참고로, 공식 문서에서 추가적인 정보를 확인해 보시면 도움이 될 수 있습니다.
- Spring Data JPA - Reference Documentation

로거 객체 질문

0

56

1

파일을 찾지 못하는 오류가 계속 뜹니다

0

99

1

services와 repository 파일에서 해야하는 작업

0

120

1

커스텀 파이프에서 value의 타입이 string 이 아닐때

0

165

1

nestjs 기본 구조 설명에서 궁금한게 있습니다.

0

175

0

typeorm ^10.0.2 버전 사용시 No metadata for "BoardRepository" was found. 오류 발생 해결방법.

3

271

1

Model과 Dto의 차이점을 좀 쉽게 알수 있을까요?

0

671

1

강의 자료 관련해서 글 남깁니다.

0

477

1

"ID로 특정 게시물 가져오기" 부분이 잘못되었습니다.

0

450

1

선생님 nestjs랑 Nextjs랑 같이 연동해서 작업하는거 어떻게 생각하시나요?

0

2504

1

쌤 근데 enum 말고 type 으로 타입선언해주면안될까요?

0

609

1

pgAdmin 4에서 데이터 베이스 만들어주기 부분

0

639

1

강의 자료 관련해서 질문있습니다.

0

462

2

port 5432 failed: recived invalid response to ssl negotiation

0

765

1

repository.ts 에서 method 를 가져 오고 싶은데, 해당 메소드가 없다고 뜨네요

0

398

1

컨트롤러에선 async/await 사용하지 않아도 되는 이유

1

690

1

마지막 강의 영상에서 배포 자료는 어디서 볼 수 있나요?

0

386

1

No repository for 질문

0

525

1

특정 게시물을 찾을 때 없는 경우 에러 메세지 생성 에러

0

475

1

XML파일도 링크 공유해주시면 감사하겠습니다.

0

347

1

회원가입 기능 구현 중 오류가 났습니다.

0

497

1

NotFoundException

0

709

1

도와주세요 ㅠㅠ!!

0

1081

2

auth.service.ts에서 오류가 납니다

0

960

2