我使用的是mongoose 4.6.6,表达4.13,护照0.3。
我有下一个mongoose Schema
var userSchema = new Schema({
nombre: String,
apellidos: String,
email: String,
pass: String,
fecha_registro : { type: Date, default: Date.now },
rol_list: [Schema.Types.ObjectId], // generic array of objectId
deleted: {type: Boolean, default: false}
});
module.exports = mongoose.model('User', userSchema);
当我搜索用户并尝试填充" rol_list"数组,总是空的。 我已经看过mongo,用户已经填好了,但猫鼬把它空了。
passport.deserializeUser(function(id, done) {
User.findById(id)
.populate('rol_list')
.exec(function(err, user) {
console.log(user);
done(err, user);
});
});
console.log(用户)始终显示数组rol_list为空。
如果我将对ObjectId的引用分配为:
rol_list: [{ type: Schema.Types.ObjectId, ref: 'Rol1' }]
正确填充,逻辑上仅与元素" Rol1"。
有什么想法吗?
答案 0 :(得分:0)
.populate(...)
mongoose功能中有一个选项,可让您指定ObjectId
背后的模型。
<强> @example 强>
Conversation.find().populate('creator', null, 'User2').exec(callback);
Stack overflow post: mongoose-populate-field-without-ref-option
答案 1 :(得分:-1)
如果你只想要对象id的数组,那么不要使用populate。
像:
passport.deserializeUser(function(id, done) {
User.findById(id)
.exec(function(err, user) {
console.log(user);
done(err, user);
});
});