• 스키마는 컬렉션에 들어가는 문서 내부의 각 필드
  • 모델은 스키마를 사용하여 만드는 인스턴스
    • 데이터베이스에서 실제 작업을 처리하는 함수들을 지니고 있는 객체

schema와 모델 생성

  • schema와 모델에 관련한 코드는 src/models에서 관리
  • 제목, 내용, 태그, 작성일
  • Schemamongoose의 모듈을 사용
  • 아래와 같이 AuthorSchema의 경우 BookSchema의 일부로도 정의가 가능하다.
import mongoose from 'mongoose';

const { Schema } = mongoose;

const AuthorSchema = new Schema({
  name: String,
  email: String,
});

const BookSchema = new Schema({
  title: String,
  description: String,
  authors: [AuthorSchema],
  meta: {
    likes: Number,
  },
  extra: Schema.Types.Mixed,
});

const PostSchema = new Schema({
  title: String,
  body: String,
  tags: [String],
  publishedDate: {
    type: Date,
    default: Date.now,
  },
});

const Post = mongoose.model('Post', PostSchema); // schema name(=posts), schema obj, <custom collection name>
export default Post;
  • mongodb에서는 model의 파라미터 첫번째로 Post를 넘기는데 컬렉션을 생성할때 @+s로 생성
  • 만약 내가 정의하고 싶은 컬렉션의 이름이 있다면 3번째 파라미터로 custom_collection_name을 넘기면 된다.

+ Recent posts