如何在mongoose模型中添加派生字段

时间:2015-01-01 22:20:04

标签: node.js mongodb mongoose

我有一个模特

var OrderSchema = new Schema({
    created: {
        type : Date, 
        default: Date.now 
    }
}):

我希望在检索到此文档时添加字段number_of_days_open字段。我尝试使用虚拟字段

OrderSchema
.virtual('number_of_days_open')
.get(function () {
    return moment(this.created).fromNow();
});

但是当我收到订单时

exports.read = function(req, res) {
  res.json(req.order);
};

exports.orderByID = function(req, res, next, id) {
  Order.findById(id).exec(function(err, order) {
    req.order = order;
    next();
  });
};

我没有得到字段number_of_days_open。当我做的时候,我也不会得到这个领域

exports.list = function(req, res) {
  Order.find().sort('-created').exec(function(err, orders) {
    if (!err) res.json(orders);
  });
};

1 个答案:

答案 0 :(得分:3)

您需要设置架构的toObjecttoJSON属性。

OrderSchema.set('toObject', { virtuals: true }) // console.log() statements would 
                                                // print the virtual fields.


OrderSchema.set('toJSON', { virtuals: true });  //virtual fields are visible when 
                                                //the mongodb 
                                                //document is converted into a 
                                                //javascript object 
                                                //internally or explicitly.