캡스톤 설계 [건물별 소통 플랫폼 BBC]

게시판 엔티티 생성 및 게시물 작성 API

softmoca__ 2024. 3. 7. 20:25
목차

Post엔티티 생성 및 유저와 관계 설정

 

post.entity.ts

import { Column, Entity, ManyToOne, OneToMany } from "typeorm";

import { BaseModel } from "./base.entity";
import { UsersModel } from "./user.entity";

@Entity()
export class PostModel extends BaseModel {
  @Column()
  postTitle: string;

  @Column()
  postContent: string;

  @Column("int", { default: 0 })
  postLike: number;

  @ManyToOne(() => UsersModel, (user) => user.posts, {
    nullable: false,
  })
  author: UsersModel;
}

user.entity.ts

@OneToMany(() => PostModel, (post) => post.author)
  posts: PostModel[];

 

한 사용자는 여러 게시물을 가지고 있을수 있으므로 user엔티티에는 One to Many관계를 맺어 주었고 post엔티티에는 Many to One 관계를 맺었다.

 

 

 

> nest g resource
? What name would you like to use for this resource (plural, e.g., 
"users")? posts
? What transport layer do you use? REST API
? Would you like to generate CRUD entry points? (Y/n) n

 

게시판  CRUD에 대한 로직을 관리할 posts모듈 생성

 

게시물 생성

 @Post()
  @UseGuards(AccessTokenGuard)
  async createPost(
    @CurrentUser() user: UsersModel,
    @Body() createPostDto: CreatePostDto
  ) {
    return this.postsService.createPost(user.id, createPostDto);
  }

 

  async createPost(authorId: number, createPostDto: CreatePostDto) {
    const post = this.postsRepository.create({
      author: {
        id: authorId,
      },
      ...createPostDto,
    });

    const newPost = await this.postsRepository.save(post);

    return newPost;
  }

 

게시물 생성시 엑세스토큰 가드와 유저데코레이터로 얻은 사용자의 id가 authorId로 잘 들어와 새로운 게시물이 잘 저장되는것을 확인.