34

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

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

我已经完成了;

现在在架构中:

 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);
}
4

3 回答 3

58

刚试过:

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

并工作!;)

现在默认情况下我使用:

  var schemaOptions = {
    toObject: {
      virtuals: true
    }
    ,toJSON: {
      virtuals: true
    }
  };
于 2012-07-19T09:37:42.803 回答
13

你也可以这样做:

docs.set('toJSON', { virtuals: true });
于 2013-02-08T06:39:11.203 回答
0

对我来说,它仅在添加getters: true到模式选项后才起作用,如猫鼬文档中所述,即

var schemaOptions = {
  toObject: {
    getters: true
  },
  toJSON: {
    getters: true
  }
};
于 2018-11-15T12:44:40.617 回答