![](/img/trans.png)
[英]While using .populate() in mongoose how to fetch and add, ObjectIds with additional properties to array(returned by .populate()) whose document in
[英]Automatically populate() on Mongoose document fetch
是否可以为特定模型的引用子文档自动运行populate()?
我有一个城市模型,它引用了区域和国家/地区文档,我希望在获取城市/城市时自动填充该文档。
好吧,Mongoose网站上没有这方面的文档; 我做的是这样的:
schema.statics.createQuery = function( populates ) {
var query = this.find();
populates.forEach(function( p ) {
query.populate( p );
});
return query;
};
当然,这种方法中有验证和其他一些东西,但基本上它就是我对模型的处理方式。
在您的情况下,如果您在每次查找调用中都严格需要,您可以在这种方法中对填充进行硬编码。
AFAIK没有办法自动填充开箱即用的所有对另一个模型的引用(虽然有插件)。 与@ gustavohenke的答案类似,您可以使用静态,以及对查询查询的小改动。
这是我要做的:
citySchema.statics.fieldsToPopulate = function() {
return ['regionField', 'countryField'];
};
其中regionField
和countryField
分别是引用模型Region
和Country
的字段。
然后在您的查询中,您可以相应地填充:
var populate = city.fieldsToPopulate ? city.fieldsToPopulate() : [];
city.findById(id)
.populate(populate)
.exec(function(err, data) {
if (err) {
return next(err);
} else {
res.render('template', { city: data });
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.