3

特定のモデルの参照サブドキュメントに対して populate() を自動的に実行することは可能ですか?

都市が取得されたときに自動的に入力されるようにしたい地域と国のドキュメントを参照する都市モデルがあります。

4

2 に答える 2

1

まあ、これに関するドキュメントは Mongoose の Web サイトにはありません。私がしていることは次のようなものです:

schema.statics.createQuery = function( populates ) {
   var query = this.find();
   populates.forEach(function( p ) {
       query.populate( p );
   });

   return query;
};

もちろん、このメソッドには検証やその他の機能がありますが、基本的にはモデルに対して行うことです。

あなたの場合、すべての検索呼び出しでそれらが厳密に必要な場合は、そのようなメソッドで populates をハードコーディングできます。

于 2013-03-20T22:29:50.200 に答える
0

私の知る限り、別のモデルへのすべての参照をすぐに自動入力する方法はありません (ただし、プラグインはあります)。@gustavohenkeの回答と同様に、検索クエリに小さな変更を加えて静的を使用できます。

これが私がすることです:

citySchema.statics.fieldsToPopulate = function() {
   return ['regionField', 'countryField'];
};

regionFieldとはそれぞれモデルとcountryFieldを参照するフィールドです。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 });
      }
    });
于 2015-08-10T05:07:59.177 に答える