Node
Mongoose 의 populate
곽빵
2019. 12. 14. 17:01
populate : Mongoose의 document(Table)이 다른 document의 ObjectId를 사용하고 있을때,
해당 ObjectId의 요소들을 가져오기 위한 편리한 기능이다.
var PostSchema = mongoose.Schema({
writer: {
type: mongoose.Schema.ObjectId,
ref: 'users7' // users7 컬렉션을 Reference
}
});
var UserSchema = mongoose.Schema({
email: {
type: String,
'default': ''
},
hashed_password: {
type: String,
'default': ''
},
name: {
type: String,
index: 'hashed',
'default': ''
},
salt: {
type: String
},
created_at: {
type: Date,
index: {
unique: false
},
'default': Date.now
},
updated_at: {
type: Date,
index: {
unique: false
},
'default': Date.now
},
provider: {
type: String,
'default': ''
},
});
users7 collection을 참조해서 name, provider, email 요소만 가져오겠다는 populate
populate로 writer를 가져오지 않으면 그냥 Objectid 만 찍혀있기때문에 이게 뭔지 알 수가 없다.
PostSchema.statics = {
list: function(options,callback){
var criteria = options.criteria || {};
// writer 의 name provider email 만 가져와서 보겠다.
this.find(criteria)
.populate('writer','name provider email')
.sort({'created_at': -1})
.limit(Number(options.perPage))
.skip(options.perPage * options.page)
.exec(callback);
}
}