users
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
enum Role {
USER = 'user',
ADMIN = 'admin',
}
@Entity()
export class UsersModel {
@PrimaryGeneratedColumn()
id: number;
@Column({
unique: true,
})
nickname: string;
@Column({
unique: true,
})
email: string;
@Column({
type: 'enum',
enum: Object.values(RoleEnum),
default: Role.USER,
})
role: Role;
@Column()
password: string;
}
users.module
에다가 imports
프로퍼티로 UserModel
를 리스트에 넣어준다. (모듈 안에서 userModel을 사용할수 있게됨)@Module({
imports: [TypeOrmModule.forFeature([UsersModel])],
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
usersService에서 써야한다.
userService
의 컨스트럭터에다가 UserModel
를 InjectRepository 시켜준다.
constructor(
@InjectRepository(UsersModel)
private readonly userRepository: Repository<UsersModel>,
) {}
user 생성 API 만들기
async createUser(email: string, nickname: string, password: string) {
const user = this.userRepository.create({
email,
nickname,
password,
});
// DB에 save
const newUser = await this.userRepository.save(user);
return newUser;
}
controller에서 라우팅 하기
@Post()
postUser(
@Body('nickname') nickname: string,
@Body('email') email: string,
@Body('password') password: string,
) {
return this.usersService.createUser(email, nickname, password);
}
/users로 Post 요청 보내ㄱㅣ
{
"nickname": "jamsilcrop",
"email": "[email protected]",
"password": "123123123",
"id": 1,
"role": "user"
}