github : https://github.com/qmdch1/JS_nestjs_auth_passport_typeorm_bcrypt_session/tree/master
사전 정보를 설명 해드리겠습니다.
1. @nestjs/cli 명령어로 프로젝트를 생성
2. user라는 co, mo, s 생성합니다.
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'sqlite', // DB타입
database: 'nest-auth-test.sqlite', // DB파일명
entities: [User], // 엔티티 리스트
synchronize: true, // DB에 스키마를 동기화 - 개발용으로만 사용한다.
logging: true, // SQL실행로그 확인 - 개발용으로만 사용한다.
}),
]
})
user.entity.ts
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User{
@PrimaryGeneratedColumn() // 자동증가
id?: number; // ?은 선택 가능함
@Column({ unique: true})
email: string;
@Column()
password: string;
@Column()
username: string;
@Column({ default: () => 'CURRENT_TIMESTAMP' }) // 펑션데이터를 사용하려면 람다식 써야함
createdDt: Date;
}
user.service.ts
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './user.entity';
constructor(@InjectRepository(User) private userRepository: Repository<User>, ){}
// 유저 생성
createUser(user): Promise<User>{
return this.userRepository.save(user);
}
// 유저 한명 검색
async getUser(email: string){
const result = await this.userRepository.findOne({
where: {email},
});
return result;
}
// 유저 정보 업데이트
async updateUser(email, _user){
const user: User = await this.getUser(email);
console.log(_user);
user.username = _user.username;
user.password = _user.password;
console.log(user);
this.userRepository.save(user);
}
// 유저 정보 삭제
deleteUser(email: any){
return this.userRepository.delete({ email });
}
user.module.ts
@Module({
imports: [TypeOrmModule.forFeature([User])],
})
app.module.ts
entities: [User], // 엔티티 리스트