1

他のドキュメントを参照したモデルがあります。そのモデルには、参照モデルで使用されるデータを処理できるメソッドが必要です。

'use strict';

var mongoose = require('mongoose')
  , Schema = mongoose.Schema
    , deepPopulate = require('mongoose-deep-populate');

var MainSchema = new Schema({
  childs: [{type:Schema.ObjectId, ref: 'Child'}], //because many-to-one
  startDate: {type: Date, default: Date.now},
  endDate: {type: Date},
});


MainSchema.methods = {

  retrieveChilds: function(callback) {

    // deepPopulation of childs not possible??

    callback(result);
  },
};

MainSchema.plugin(deepPopulate);

module.exports = mongoose.model('Main', MainSchema);

上記のコード例に見られるように、retrieveChilds 関数は現在のスキーマで deepPopulate 関数を実行する必要があります。これは可能ですか、それともモデルの外で起こるべきですか? (これにより、コードが重複する場合があります)

4

1 に答える 1

0

Mongooseインスタンス メソッドthisは、 はメソッドが呼び出されるドキュメント インスタンスであるため、次のように実行できます。

MainSchema.methods = {
  retrieveChilds: function(callback) {
    this.deepPopulate('childs.subject.data', callback);
  },
};

それを呼び出すには:

main.retrieveChilds(function(err, _main) {
    // _main is the same doc instance as main and is populated.
});
于 2015-06-16T13:33:56.527 に答える