猫鼬 - 子文档,不能手动填充/套ref字段
问题描述:
我有一个子文档,像这样一个模式:猫鼬 - 子文档,不能手动填充/套ref字段
User: {
events: [{
sender: {
type: Schema.ObjectId,
ref: 'User'
}
}]
}
现在说我找回孩子子文档,我已经有“发件人”从数据库中检索,我不能手动设置,这里是我的意思是:
var sender = User.findBy.... // I retrieve the sender
var event = user.events.id(id); // I retrieve the event by ID for the current user
// Now I want to do this but it doesn't work
event.sender = sender; // does not assign, it still remains an ObjectId
我想上面基本上做手工人口自己,因为它似乎并不认为猫鼬支持填充一个单子文件实例(请纠正我,如果我错了,有一种方法)。
我知道它可以填充整个事件数组,但我只需要做一个实例,不需要为数组中的所有事件填充开销。
答
如果你想填充它手动只是做:
User.findOneById(sender, function(err, foundSender) {
event.sender = foundSender;
});
答
具有相同问题,因为我的人。此功能现在支持mongoose 4.0。
对于那些在3.x或更低版本上的人,并没有真正的替代解决方案,但可以通过将对象转换为普通的JSON对象来部分实现。
要么通过.toObject()或.toJSON(),然后做的分配。 但是请注意,您将失去猫鼬功能,因此只有在完全返回客户端之前才能做到这一点。
这就是我所做的,如果你看看我上面的例子,这是行不通的,这个任务不被猫鼬对象接受。 – 2015-03-18 23:55:53
哦。编辑一秒 – jtmarmon 2015-03-18 23:58:06