node.js와 MongoDB를 연결해주는
ODM(Object Document Mapping)
: 객체와 문서를 1대1로 매칭하는 역할
MongoDB 스키마를 만들다 보면 필드 내에 다른 다큐먼트의 ObjectID를 쓰는 경우가 존재
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const personSchema = Schema({ _id: Schema.Types.ObjectId, name: String, age: Number, stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }] });
{ _id: { $oid: 5a23c1b5d52a003c98e13flc }, name: 'hongjinhyeok', age: 25, stories: { $oid: 5a23c1b5d52a003c98e13flb } }
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const storySchema = Schema({ author: { type: Schema.Types.ObjectId, ref: 'Person' }, title: String, fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }] });
{ _id: { $oid: 5a23c1b5d52a003c98e13flc }, name: 'hongjinhyeok', age: 25, stories: { author: { $oid: 5a23c1b5d52a003c98e13fld }, title: 'How to be a good programmer', fnas: { $oid: 5a23c1b5d52a003c98e13fld } } }
이렇게 populate를 활용하면 Schema.Types.ObjectId가 참조하는 다른 document를 조회
할 수 있다.