JS/Nest.js
[Nest] base64 토큰 인증 구현
* 설계/** * 토큰인증 * * 1) 사용자가 로그인 또는 화원가입을하면, 토큰 발급받는다. * * 2) 로그인 할때는 Basic 토큰과 함께 요청을보낸다. * Basic 토큰 : '이메일:비밀번호'를 Base64로 인코딩한 결과 * ex) {authorization : 'Basic {token}' } * * 3) 아무나 접근 할 수 없는 정보 (private router)를 접근할때는 * access토큰을 헤더에 추가해서 요청과함께 보낸다. * ex) {authorization: 'Bearer {token}'} * * 4) 토큰과 요청을 함께 받은 서버는 토큰 검증을 통해 현재 요청을 보낸 * 사용자가 누구인지 알 수 있다. * ex) 토큰의 sub(id) => 해당 ..
[Nest] JWT 토큰발급 구현, 외부 모듈 import-export 하는법
* 의존성 주입authModule에서 import => DI 컨테이너에 올라감@Module({ imports:[ JwtModule.register({}), ], controllers: [AuthController], providers: [AuthService],})export class AuthModule {}서비스에서 생성자 주입받고 사용할수 있음.@Injectable()export class AuthService { constructor( private readonly jwtService: JwtService ) { } * jwt 의사코드/** * 1) register with email * - email, nickname, password 입력받고 사용자 생성 * ..
[Nest] Relation 생성, 1대다, 다대1 연관관계 구현
엔티티 수정/** * 게시글은 1명의 사용자를 가진다. * 사용자는 게시글 여러개를 가진다. * users 모델에서 posts모델을 표현하는 속성이 posts다. */@ManyToOne(()=>UsersModel, (user)=> user.posts, { nullable: false,})author: UsersModel;/** * 사용자는 여러개의 post를 가진다. * (연동할모델, 반환 모델) * 포스트모델의 어떤 속성하고 연동인지? post.author */@OneToMany(()=> PostsModel, (post) => post.author)posts : PostsModel[]; * 오류원인 : author는 더이상 string이 아니라, user 객체이기 때문.해결 : authorId로 인자..
[Nest] enum => 값 제한 하기
roles.const.ts@@ -0,0 +1,4 @@export enum RolesEnum{ ADMIN = 'ADMIN', USER='USER',}users.entity.ts@Column({ enum: Object.values(RolesEnum), //객체의 값들을 가져와서 배열로 만듬 default: RolesEnum.USER, //기본값})role: RolesEnum;gpt네, 이 코드는 TypeORM에서 사용되는 엔티티 클래스의 한 필드를 정의하는 부분입니다. 각 부분에 대해 자세히 설명해 드리겠습니다.@Column({ enum: Object.values(RolesEnum), default: RolesEnum.USER,})role: RolesEnum;이 코드의 각 부분을 분석해보겠습니다:..
[Nest] CRUD 구현, body 받는법
* body 받는법컨트롤러@Post()createPost(@Body() postData: { author: string; title: string; content:string; }){ return this.postsService.createPost(postData.author, postData.title, postData.content);}서비스async createPost(author: string, title: string, content: string){ const post = this.postsRepository.create({ author: author, title: title, content: content, likeCount:0, commentCount:0, ..
[Nest] typeorm 설정, 모듈생성, 의존성주입, No metadata for "PostsModel" was found 문제해결
import { Module } from '@nestjs/common';import { AppController } from './app.controller';import { AppService } from './app.service';import { UsersModule } from './users/users.module';import { TypeOrmModule } from "@nestjs/typeorm";@Module({ imports: [ UsersModule, TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'postgres', passwo..
[Nest] Dependency Injection 의존성 주입
이러면 DI Container가 서비스를 관리해주고service를 사용하는 곳에 같은(싱글톤) 서비스 인스턴스를 주입해준다.