인프런 커뮤니티 질문&답변

채 수님의 프로필 이미지
채 수

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

에러 해결하고 데이터베이스 초기화하기

에러 해결하고 데이터베이스 초기화하기 파트

작성

·

398

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

코드팩토리 통합 링크
https://links.codefactory.ai

안녕하세요 혹시

원래 만든 postModel 인터페이스에서

export interface PostModel {
id: number;
author: string;
title: string;
content: string;
likeCount: number;
commentCount: number;
}

이렇게 author가 string으로 되어있어서 오류가 나오는데 이건 어떻게 처리하나요?

 

The expected type comes from property 'author' which is declared here on type 'DeepPartial<PostModel>'

터미널에서는 이렇게 오류가 나옵니다

타입 관련 오류인데 이게 아래에선 postmodel을 받는데 author을 authorId가 들어간 객체로 받는데 위에선 선언을 string으로 해줬는데 이것도 잘 이해가 안 갑니다..

 

async createPost(authorId: number, title: string, content: string) {
// 1) create -> 저장할 객체를 생성한다.
// 2) save -> 객체를 저장한다. (create 메서드에서 생성한 객체로)

const post = this.postsRepository.create({
author: {
id: authorId,
},
title,
content,
likeCount: 0,
commentCount: 0,
});

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

return newPost;
}

 

 

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

말씀하신 PostModel 인터페이스는 데이터베이스를 사용하지 않을때 모델을 정의하기 위해 사용했습니다.

데이터베이스 테이블은 이미 강의를 들으신 것 처럼 Typeorm을 사용했기 때문에 PostModel 인터페이스는 아무런 관련이 없습니다.

author를 String 값이 아닌 객체로 입력하는 이유도 마찬가지입니다. Typeorm을 사용해서 post 테이블과 user 테이블을 연동하였고 연동 column은 post 테이블의 author_id 칼럼입니다.

혹시 이 부분이 이해 안되셨다면 다시 댓글 부탁드립니다.

감사합니다.

채 수님의 프로필 이미지
채 수

작성한 질문수

질문하기