cleanUrl: /본격-프로젝트-시작
floatFirstTOC: right
이번 장에서는 UserService의 create 메서드를 작성하고, 이를 UsersController와 연결하는 과정을 살펴보자.
먼저, UserService에서 TypeORM의 Repository를 주입해야 한다. 이를 위해 @InjectRepository 데코레이터를 사용한다.
import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './users.entity';
@Injectable()
export class UsersService {
constructor(@InjectRepository(User) private repo: Repository<User>) {}
}
@InjectRepository(User)를 사용하면 NestJS의 의존성 주입 시스템이 자동으로 User 엔터티와 연결된 Repository 인스턴스를 주입한다.
이제 create 메서드를 작성한다. 사용자의 email과 password를 받아 새로운 사용자 엔터티를 생성하고, save() 메서드로 이를 데이터베이스에 저장한다.
import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './users.entity';
@Injectable()
export class UsersService {
constructor(@InjectRepository(User) private repo: Repository<User>) {}
create(email: string, password: string) {
const user = this.repo.create({ email, password });
return this.repo.save(user);
}
}
UsersController에서 UsersService를 주입하고, create 메서드를 호출하여 사용자 생성 API를 구현한다.
import { Body, Controller, Post } from '@nestjs/common';
import { CreateUserDto } from './dtos/create-user.dto';
import { UsersService } from './users.service';
@Controller('auth')
export class UsersController {
constructor(private usersService: UsersService) {}
@Post('/signup')
createUser(@Body() body: CreateUserDto) {
this.usersService.create(body.email, body.password);
}
}
@Body() 데코레이터를 사용하여 클라이언트 요청의 본문에서 email과 password를 받아 create 메서드에 전달한다.