mongoDB는 join을 지원하지 않지만,
mongoose를 이용하면 populate를 이용해 join기능을 구현할 수 있다.
하지만 다중(N-many) populate를 사용하려면 코드를 일일이 삽입해야 한다.
하지만 mongoose-deep-populate를 이용하면 쉽게 multi populate를 구현할 수 있다.
https://github.com/buunguyen/mongoose-deep-populate
var UserSchema = new Schema({})
var CommentSchema = new Schema({
user : {type: Number, ref: 'User'}
})
var PostSchema = new Schema({
user : {type: Number, ref: 'User'},
comments: [{type: Number, ref: 'Comment'}],
likes : [{user: {type: Number, ref: 'User'}}],
approved: {status: Boolean, user: {type: Number, ref: 'User'}}
})
var deepPopulate = require('mongoose-deep-populate')(mongoose);
PostSchema.plugin(deepPopulate, options);
저 대 괄호가 멋지다..
post가 comments를 가져올때 한번의 API 호출만으로 가능하다.
속도 향상을 위해 구현했는데 mongoose의 populate는 많이 쓸수록 자원도 많이 차지하고 속도도 느련진다고…