繁体   English   中英

在Mongoose文档提取上自动填充()

[英]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'];
};

其中regionFieldcountryField分别是引用模型RegionCountry的字段。

然后在您的查询中,您可以相应地填充:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM