填充mongoose模型的实例

时间:2018-05-17 09:42:31

标签: javascript mongoose

我可以对我已做.populate()的猫鼬模型实例.find()吗? 所以这就是学校的例子:

Model.findById(id).populate("bar").exec(function(err, document){
   doSth(document);
});

但我想在中间件中单独执行.find(),并在需要时传递结果以阻止它.populate()。是这样的:

var foo;
Model.findById(id, function(err, document){
   foo = document;
});

foo.populate("bar");
doSth(foo);

或:

foo.populate("bar").exec(function(err, document){
   doSth(document);
});

有可能吗?

2 个答案:

答案 0 :(得分:1)

是的,你可以这样做

foo.populate('bar', function(err) {
 console.log(foo.bar);
});

我找到了这个解决方案here。如果它对你有帮助,请告诉我。

答案 1 :(得分:0)

确实有多种方法: https://mongoosejs.com/docs/api.html#document_Document-populate

如果您使用的是异步/等待,请不要忘记添加.execPopulate(),例如:

let foo = await Foo.findOne({}).exec()
await foo.populate('bar').execPopulate()