1. module 추가
nest g module 모듈명
추가하려는 DB의 모듈 이름을 터미널 창에 입력하면 자동으로 Module이 만들어진다
2. app.module.ts 에 추가할 DB 정보 추가
TypeOrmModule.forRoot({
type: 'mysql',
host: '',
port: 3306,
username: '',
password: '',
database: '',
entities: [__dirname + '/**/*.entity.{js,ts}'],
synchronize: false,
})
연결할 DB정보를 추가한다
Module은 1번 과정에서 자동으로 추가됨
3. Entity 추가
파일.entity.ts 파일 추가
import { Entity, Column, PrimaryGeneratedColumn, Unique} from 'typeorm';
@Entity({database:'database명', name: '테이블명'})
@Unique(['email'])
export class User{
@PrimaryGeneratedColumn()
id: number;
@Column()
name_first: string;
@Column()
name_last: string;
@Column()
email: string;
@Column()
password: string;
@Column()
address: string;
@Column()
address_detail: string;
}
DB가 여러개 연결되어있을 때 테이블명을 명시 안 해주니까 접근이 안되어서 @Entity에 name을 추가했다
4. Repository 추가
.repository.ts
import { Repository, EntityRepository } from 'typeorm';
import { User } from './user.entity';
@EntityRepository(User)
export class UserRepository extends Repository<User> {
}
5. Service 추가
.service.ts
npm install uuid --save
import { Injectable, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './user.entity';
import { UserRepository } from './user.repository';
const SALT_ROUNDS = 10;
@Injectable()
export class UserService {
constructor(
@InjectRepository(UserRepository)
private userRepository: UserRepository
){}
//user 추가
async create(user:Partial<User>):Promise<User>{
return this.userRepository.save(user);
}
//삭제
async delete(id: number):Promise<void>{
const result = await this.userRepository.delete(id);
if(result.affected === 0){
throw new NotFoundException(`Can't find User with id ${id}` )
}
}
//수정
async updateUser(id:number,update: Partial<User>):Promise<User>{
await this.userRepository.save(model);
return this.findById(id);
}
//모든 테이블 행 조회
async getAll(): Promise<User[]>{
return this.userRepository.find();
}
//Id로 조회
async getFindById(id: number):Promise<User>{
const found = await this.userRepository.findOne(id);
if(!found){
throw new NotFoundException(`Can't find User with id ${id}`)
}
return found;
}
}
반응형
6. Controller 추가
.controller.ts
import { Body, Controller,Delete,Get, Param, ParseIntPipe, Patch, Post, Req, Res} from "@nestjs/common";
import { Render } from "nest-jsx-template-engine";
import { UserModel } from "./user.entity";
import { UserService } from "./user.service";
import { UserDto } from "./dto/user.dto";
import { UserDetail} from "./views/user.view";
import { Response } from 'express';
@Controller('user')
export class UserController{
constructor(private readonly userService: UserService){}
@Get()
getAllModel():Promise<BaseModel[]>
{
const user = this.userService.getAllModel();
return user
}
@Post('/register')
async createUser(
@Body() user:UserDto,
@Res() res: Response,
):Promise<void>{
await this.userService.create({
name_first: body.name_first,
name_last: body.name_last,
email: body.email,
password: body.password,
});
res.redirect(302, '/login');
}
@Get('/:id')
getBoardById(@Param('id') id:number): Promise<User>{
return this.userService.getModelById(id);
}
@Delete('/:id')
deleteUser(@Param('id',ParseIntPipe) id: number):Promise<void>{
return this.userService.delete(id);
}
@Patch('/:id/edit')
updateUser(
@Param('id',ParseIntPipe) id: number,
@Body() body: BaseModelDto
){
return this.userService.updateUser(id,body.email,body.password);
}
}
7. Module에 controller와 service를 추가하여 다른 모듈에서 사용할 수 있도록 설정
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UsersService } from './users.service';
import { UserRepository } from './user.repository';
@Module({
imports: [TypeOrmModule.forFeature([UserRepository])],
providers: [UserService],
controllers: [UserController],
})
export class UsersModule {}
export:[UserService] 추가하면 다른 모델에서 사용할 수 있다
반응형
'기타 프로그램' 카테고리의 다른 글
TypeScript 현재 시간 포맷 형식(YYYY-MM-DD hh:mm:ss) (0) | 2022.06.28 |
---|---|
OneDrive 탐색기에서 안 보이게 하기 (1) | 2022.06.28 |
윈도우10(Windows10) 한컴 입력키 삭제 (0) | 2022.06.14 |
그림판으로 모자이크 하는 방법 (0) | 2022.03.29 |
npm yarn 명령어 차이 (0) | 2022.03.03 |
댓글