猫鼬包括在虚拟的toJSON字段默认:schemaOptions.toJSON.virtuals

2019-07-30 12:31发布

我在另一个答案,为了包括虚拟域你必须做喜欢看到https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYs

var schemaOptions = {
  toJSON: {
    virtuals: true
  }
};

我已经做了;

现在的架构:

 new Schema({...}, schemaOptions);

但还是那么,该数据不包括虚拟..:■

但是,像这样的工作:

var docsCallback = function(err, docs){
    var i = docs.length;
    var nDocs = [];
    while(i--){
        nDocs[i] = docs[i].toObject({virtuals: true});
    }
    done(nDocs);
}

Answer 1:

只是尝试:

  var schemaOptions = {
    toObject: {
      virtuals: true
    }
  };

和工作! ;)

现在,在默认情况下使用:

  var schemaOptions = {
    toObject: {
      virtuals: true
    }
    ,toJSON: {
      virtuals: true
    }
  };


Answer 2:

你可以做到这一点的方式,以及:

docs.set('toJSON', { virtuals: true });


Answer 3:

对于我来说,只是加入后工作getters: true要架构选项,如中提到猫鼬文档 ,即

var schemaOptions = { toObject: { getters: true }, toJSON: { getters: true } };



文章来源: Mongoose virtual fields included in toJSON by default: schemaOptions.toJSON.virtuals = true; still doesn't include virtual fields by default