如何在解决GET请求之前更改日期格式

时间:2017-02-08 03:36:22

标签: node.js express momentjs

在我的模型上,我将dateOrdered对象默认为Date.now()

dateOrdered: { type: Date, default: Date.now() }

我想在解析请求之前使用moment.js格式化此dateOrdered。请看一下。

ordersRouter.route('/getorders')
    .get(function (req, res) {
        Orders.find()
            .populate({ path: 'userPurchased products.product', select: '-username -password' })
            .exec(function (err, orders) {
                var fromNow = moment(orders.dateOrdered).fromNow();
                var cleanDate = moment(orders.dateOrdered).format('MMM Do YYYY');

                orders.dateOrdered = cleanDate;

                res.json(orders);
            });
    });

我如何格式化以使其成为可理解的格式?这就是现在的样子。

enter image description here

1 个答案:

答案 0 :(得分:0)

moment(orders.dateOrdered).format('MMM Do YYYY')返回一个字符串,而不是Date。当您分配字符串时,Mongoose Schema会将字符串强制转换回正确的Date对象,然后将Date序列化为默认格式的时间戳。因此,渲染输出中的丑陋日期字符串。

尝试:

orders = JSON.parse(JSON.stringify(orders));
orders.dateOrdered = cleanDate;
res.json(orders);

这里我们已经从Schema转换为vanilla类型以避免转换。