猫鼬 - 持久的“虚拟”场?

时间:2014-05-14 17:38:57

标签: node.js model mongoose virtual

好的,我有节点作为后端,它有以下Mongoose模型:

var SomeSchema = new Schema({
  name: {type: String, required: true},
  iplanned: {type: String, default:60}
});

SomeSchema.virtual('planned')
.get(function () {
  return parseInt(this.iplanned / 60, 10) + ' mins';
})
.set(function (val) {
  this.iplanned = parseInt(val, 10) * 60;
});

someModel = mongoose.model('Some', SomeSchema);

到目前为止,很好,从node.js方面我可以处理记录并按照我喜欢的方式访问这个planned字段。

以下是通过http:

提供此列表的简单响应者
exports.list = function (req, res) {
  someModel.find(function (err, deeds) {
    return res.send(deeds);
  });
});

这就是问题所在 - 虚拟字段planned未包含在每条记录中(嗯,这是可以理解的)。有没有办法以某种方式为每条记录注入我的虚拟字段?或者我也必须在前端进行virtual转换? (是的,我知道那里有Meteor.js,试着在这里没有它。)

1 个答案:

答案 0 :(得分:1)

在您的架构中,您应该重新定义 toJSON()方法:

SomeSchema.methods.toJSON = function () {
   var obj = this.toObject();
   obj.planned = this.planned;
   return obj;
};