티스토리 뷰
728x90
반응형
[ ERD Diagram ]
TypeORM과 다르게 Mongoose 에서는 어떻게 외래키를 표현할까 궁금해서 기록하게 되었다.
특히 마켓 모델 을 구현 해야되는데, 다른 모델의 PK(Primary Key)를 참조해야되는 컬럼이 존재할 때
어떻게 코드를 작성해야될지 몰랐다. 그래서 공식다큐먼트를 읽기로했다 :)
[참고] 공식 다큐먼트들
@Schema() : 스키마 정의이자, 클래스를 나타내는 데코레이터 이다.
@Prop() : 다큐먼트의 프로퍼티를 정의하는 데코레이터 이다.
(1) required : NOT NULL = 값이 반드시 필요함
@Prop({ required: true })
name :string;
(2) default : 기본값
@Prop({ default: '한국' })
country :string;
@Prop({ default: Date.now })
createdAt : Date;
(3) 외래키 나타내기
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: 모델명 })
외래키명: 모델타입;
(4) 마켓모델 작성완료
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import mongoose from 'mongoose';
import {
Product,
ProductDocument,
} from '../../products/schemas/product.schema';
import { User, UserDocument } from '../../users/schemas/user.schema';
export type MarketDocument = Market &
mongoose.Document & { seller: UserDocument } & {
product: ProductDocument;
};
@Schema()
export class Market {
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'User' }) // 외래키
seller: User; // 판매자 아이디
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'Product' }) // 외래키
product: Product; // 상품 아이디
@Prop({ default: Date.now })
createdAt: Date; //등록일
@Prop({ default: null })
deletedAt: Date; //삭제일
}
export const MarketSchema = SchemaFactory.createForClass(Market);
[ 참고 ]
728x90
반응형
'Backend > 꾸준히 TIL' 카테고리의 다른 글
[NestJS + Axios] Axios를 활용하여 현재 날씨데이터를 가져오기 (1) | 2022.11.23 |
---|---|
[NestJS+Mongoose] MongoDB aggregation 활용하기 (0) | 2022.11.21 |
[NestJS] command not found: nest (0) | 2022.11.17 |
[MongoDB+Mongoose] MongoDB 옵션 활용하여 쿼리문 작성하기 (0) | 2022.11.17 |
[NestJS+Mongoose] NestJS 에서 mongoose.populate() 사용하기 (0) | 2022.11.16 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스마트폰중독
- node.js
- TDD
- MySQL
- 개발용어
- Mongoose
- 미완
- gem
- 한달어스
- Jekyll
- 참고
- 바이트디그리
- nestjs
- TypeScript
- 습관개선
- nestjs jest
- 디지털디톡스
- 나도 할 수 있다
- typeORM
- RDBMS
- OS
- Nest.js
- IT용어
- jest
- MongoDB
- vscode
- 클린아키텍쳐
- 한달독서
- 갓생살자
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함