캡스톤 설계 [건물별 소통 플랫폼 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로 잘 들어와 새로운 게시물이 잘 저장되는것을 확인.