默认情况下包含在toJSON中的Mongoose虚拟字段:schemaOptions.toJSON.virtuals = true;默认情况下仍不包括虚拟字段

时间:2012-07-19 09:28:22

标签: virtual mongoose

我在另一个答案中看到,为了包含虚拟字段,您必须执行https://groups.google.com/forum/?fromgroups#!topic/mongoose-orm/HjrPAP_WXYs

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

我已经完成了;

现在在Schema中:

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

但仍然如此,数据不包括虚拟..:s

但是这样有效:

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

3 个答案:

答案 0 :(得分:53)

刚试过:

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

并且工作了! ;)

现在默认我使用:

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

答案 1 :(得分:11)

你也可以这样做:

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

答案 2 :(得分:0)

对我来说,它仅在向mongoose docs中提到的模式选项中添加getters: true后才起作用,即

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