mongoose 스키마와 모델

woody kim·2021년 6월 20일
0

MongoDB

목록 보기
5/6
post-thumbnail

mongoose에는 스키마(schema)와 모델(model)이라는 개념이 존재한다.

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

스키마 생성

  • 스키마를 만들 때 mongoose모듈은 Schema를 사용하여 정의한다.
  • 각 필드 이름과 필드의 데이터 타입 정보가 들어 있는 객체를 작성한다.
  • 필드의 기본값으로는 default 값을 설정하면 된다.
  • 스키마 내부에 다른 스키마를 내장 시킬 수도 있다.
const mongoose from 'mongoose';

const { Schema } = mongoose;

const PostSchema = new Schema({
  title: String,
  body: String,
  tags: [String], // 문자열 배열
  publishedDate: {
    type: Date,
    default: Date.now // 현재 날짜를 기본값으로 지정
})

mongoose Schema Types

Schema는 다음과 같은 타입을 지원한다.

  • String : 문자열
  • Number : 숫자
  • Date : 날짜
  • Buffer : 파일을 담을 수 있는 버퍼
  • Boolean : treu or false
  • Mixed(Schema.Types.Mixed) : 어떤 데이터도 넣을 수 있는 형식
  • ObjectId(Schema.Types.ObjectId) : 객체 아이디, 주로 다른 객체를 참조할 때 넣음
  • Array : 배열 형태의 값, []로 감싸서 사용

모델 생성

  • 모델을 만들 때는 mongoose.model 함수를 사용한다.
  • model() 함수는 두 개의 파라미터를 필요로 한다.
  • 첫 번째 파라미터는 스키마 이름이고, 두 번째 파라미터는 스키마 객체이다.
  • 데이터베이스는 스키마 이름을 정해주면 그 이름의 복수 형태로 데이터베이스에 컬렉션 이름을 만든다.(스키마 이름이 'Post'이면 컬렉션은 'posts'로 생성)
  • MongoDB에서 컬렉션 이름을 만들 때, 권장되는 컨벤션은 구분자를 사용하지 않고 복수 형태로 사용하는 것이다.
  • 컨벤션 규칙을 따르고 싶지 않다면, model()함수의 세 번째 ㅇ파라미터에 원하는 컬렉션 이름을 넣으면 된다.
const mongoose from 'mongoose';

const { Schema } = mongoose;

// 스키마 객체 생성
const PostSchema = new Schema({
  title: String,
  body: String,
  tags: [String], // 문자열 배열
  publishedDate: {
    type: Date,
    default: Date.now // 현재 날짜를 기본값으로 지정
})

// 모델 생성
const Post = mongoose.model('Post', PostSchema);
export default Post;

참고

리액트를 다루는 기술

profile
안녕하세요

0개의 댓글