인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

tjdals34152608's profile image
tjdals34152608

asked

Slack Clone Coding [Backend with NestJS + TypeORM]

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

Written on

·

153

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;
  }
}
nodejsexpressNestJSTypeORM

Answer 1

2

zerocho님의 프로필 이미지
zerocho
Instructor

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

tjdals34152608's profile image
tjdals34152608

asked

Ask a question