猫鼬填充没有引用的 ObjectId 的通用数组
Posted
技术标签:
【中文标题】猫鼬填充没有引用的 ObjectId 的通用数组【英文标题】:mongoose populate generic array of ObjectId without ref 【发布时间】:2017-03-23 00:50:43 【问题描述】:我正在使用猫鼬 4.6.6,快递 4.13,护照 0.3。
我有下一个猫鼬模式
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 中查看了用户已填满,但 mongoose 将其返回为空。
passport.deserializeUser(function(id, done)
User.findById(id)
.populate('rol_list')
.exec(function(err, user)
console.log(user);
done(err, user);
);
);
console.log(user) 总是显示数组 rol_list 为空。
如果我分配对 ObjectId 的引用,例如:
rol_list: [ type: Schema.Types.ObjectId, ref: 'Rol1' ]
than 是正确填充的,逻辑上只有元素“Rol1”。
有什么想法吗?
【问题讨论】:
rol_list
后面的架构名称是什么?
不,后面没有架构。我想要一个通用的对象数组。
【参考方案1】:
.populate(...)
mongoose 函数中有一个选项,允许您指定 ObjectId
后面的模型。
@example
Conversation.find().populate('creator', null, 'User2').exec(callback);
Stack overflow post: mongoose-populate-field-without-ref-option
【讨论】:
【参考方案2】:如果您想要仅包含对象 ID 的数组,则不要使用填充它。
喜欢:
passport.deserializeUser(function(id, done)
User.findById(id)
.exec(function(err, user)
console.log(user);
done(err, user);
);
);
【讨论】:
以上是关于猫鼬填充没有引用的 ObjectId 的通用数组的主要内容,如果未能解决你的问题,请参考以下文章
只有当字段包含 ObjectId 时,是不是可以让猫鼬填充混合字段?