목차
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로 잘 들어와 새로운 게시물이 잘 저장되는것을 확인.
'캡스톤 설계 [건물별 소통 플랫폼 BBC]' 카테고리의 다른 글
포스트맨 기능활용[환경변수,토큰 삽입 자동화] (0) | 2024.03.07 |
---|---|
[백엔드] 회원가입,로그인(JWT토큰&리프레시 토큰&가드&커스텀데코레이터) [2] (0) | 2024.03.07 |
[백엔드] 회원가입,로그인(JWT토큰&리프레시 토큰) [1] (0) | 2024.03.07 |
[백엔드] NestJS 프로젝트 및 데이터 베이스 세팅 (0) | 2024.03.07 |
미드/하이파이 프로토 타입 [와이어 프레임&프로토-타이핑] (0) | 2024.03.07 |