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

How to add derived fields in mongoose model

我有模型

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

您需要设置架构的 toObject or toJSON 属性。

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.