2014-05-14 54 views
0

好吧,我有节点作为后端,它具有以下猫鼬模型:猫鼬 - 永久的'虚拟'字段?

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

到目前为止,这是不错的,从东西我可以记录工作,并访问此planned领域,因为我的node.js侧喜欢。

下面是一个简单的应答通过HTTP服务于这个列表:

exports.list = function (req, res) { 
    someModel.find(function (err, deeds) { 
    return res.send(deeds); 
    }); 
}); 

而这里的问题 - 不包括在每一条记录(当然,这是可以理解的,那种)的虚拟现场planned。有没有办法为我的虚拟领域注入每个记录?或者我还必须在前端执行virtual转换? (是的,我知道那里有Meteor.js,试着没有它在这里)。

+0

是否存在时,不包括在虚拟领域的模式?你的数据在Mongo中是什么样的? –

+0

由于架构(如上所示),Mongo存储{name,iplanned}的记录。为了应用起见,创建了虚拟'计划'字段 - 在这种情况下是一个简单的格式化程序。 –

回答

0

在您的模式,你应该重新定义的toJSON()方法

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