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

Tot*_*.js 32 virtual mongoose

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

var schemaOptions = {
  toJSON: {
    virtuals: true
  }
};
Run Code Online (Sandbox Code Playgroud)

我做过的;

现在在架构中:

 new Schema({...}, schemaOptions);
Run Code Online (Sandbox Code Playgroud)

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

但是像这样工作:

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

Tot*_*.js 53

刚试过:

  var schemaOptions = {
    toObject: {
      virtuals: true
    }
  };
Run Code Online (Sandbox Code Playgroud)

并且工作了!;)

现在默认我使用:

  var schemaOptions = {
    toObject: {
      virtuals: true
    }
    ,toJSON: {
      virtuals: true
    }
  };
Run Code Online (Sandbox Code Playgroud)


Amo*_*rni 12

你也可以这样做:

docs.set('toJSON', { virtuals: true });
Run Code Online (Sandbox Code Playgroud)