강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

moong moong님의 프로필 이미지
moong moong

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

트랜잭션 데코레이터 방식으로 했을 때!

작성

·

162

0

영상에서 말했듯이 트랜잭션 코드를 아래(데코레이터 사용)처럼 작성했는데,

users.controller.ts에서 users.service.ts의 join으로 로직을 넘기는 파라미터에서 에러가 뜹니다.

넘기는 파라미터에는 body.email, body.nickname, body.password 세 개이지만 

레포지토리의 인수가 제공되지 않았다는 에러입니다.

혼자 해결해보는 데 시간이 소요되어 여쭤봅니다.

어떻게 하면 될까요??

@Transaction()
  async join(
    emailstring,
    nicknamestring,
    passwordstring,
    @TransactionRepository(UsersusersRepositoryRepository<Users>,
    @TransactionRepository(Users)
    workspaceMembersRepositoryRepository<WorkspaceMembers>,
    @TransactionRepository(Users)
    channelMembersRepositoryRepository<ChannelMembers>,
  ) {
    const user = await usersRepository.findOne({ where: { email } });
    if (user) {
      throw new UnauthorizedException('이미 존재하는 사용자입니다.');
    }
    const hashedPassword = await bcrypt.hash(password12);
    const returned = await usersRepository.save({
      email,
      nickname,
      password: hashedPassword,
    });
    await workspaceMembersRepository.save({
      userId: returned.id,
      workspaceId: 1,
    });
    await channelMembersRepository.save({
      userId: returned.id,
      channelId: 1,
    });
    return true;
  }
}

답변 1

2

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

@TransactionRepository를 controller에서 주입하고 service join의 매개변수로 넘기세요.

moong moong님의 프로필 이미지
moong moong

작성한 질문수

질문하기