【问题标题】:Mongoose virtual fields included in toJSON by default: schemaOptions.toJSON.virtuals = true; still doesn't include virtual fields by defaulttoJSON 中默认包含的 Mongoose 虚拟字段:schemaOptions.toJSON.virtuals = true;默认情况下仍然不包含虚拟字段
【发布时间】:2012-07-18 11:00:08
【问题描述】:

我在另一个答案中看到,为了包含虚拟字段,您必须像 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);
}

【问题讨论】:

  • toObject 是否自动在对象中找到.populate 任何refs?假设一个 Post 对象中有一个 User 引用。 @Totty.js

标签: virtual mongoose


【解决方案1】:

对我来说,它仅在将 getters: true 添加到架构选项后才起作用,如 mongoose docs 中所述,即

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

【讨论】:

    【解决方案2】:

    刚试过:

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

    并且工作! ;)

    现在我默认使用:

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

    【讨论】:

    • 只接受您自己的答案,这样问题就会在问题列表中显示为已回答
    【解决方案3】:

    你也可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2011-04-23
      • 2021-11-15
      • 1970-01-01
      • 2011-07-22
      • 2017-01-26
      相关资源
      最近更新 更多