2017-02-08 4 views
0

На моей модели, я по умолчанию в dateOrdered объект как Date.now()Как изменить формат даты, прежде чем разрешения запроса GET

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

Я хочу, чтобы отформатировать этот dateOrdered используя moment.js до того разрешения запроса. Взгляни, пожалуйста.

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

ответ

0

moment(orders.dateOrdered).format('MMM Do YYYY') возвращает строку, а не даты. В Mongoose Schema строка привязывается к соответствующему объекту Date, когда вы его назначаете, и затем дата сериализуется как метка времени по умолчанию. Следовательно, уродливая строка даты в отображаемом выходе.

Try:

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

Здесь мы преобразовали из схемы для типов ваниль, чтобы избежать литья.