Дата в формате node.js mongodb при получении списка

Я новичок в Node.Js и MongoDB. Я получаю дату создания Дата: 2018-09-06T06: 14: 53.111Z. На выходе я пытаюсь отобразить как «ММ / ДД / ГГГГ».

Вот мой код. Я получаю сбор данных за последние 60 дней.

 var today = new Date();

    today.setDate(today.getDate() - 60);

    ODSCase.find({ UserGUID: req.UserGUID ,CreatedDate:{"$gte":new Date(today)} }).sort({ModifiedDate: -1})
   .exec()
   .then(doc => {
       res.status(200).json(doc);
   })
   .catch(err =>{ err500.err500(err,req,res,next);});

Выход:

 {

    "_id": "5b9242aed7ae250c74325362",
    "CustomerGUID": "ee1ac5c7-c0f9-466c-8859-95dc1fcd0334",
    "InstanceGUID": "878aee54-1b95-46d1-9e26-b9eaea9f9cd4",
    "UserGUID": "f0272467-3ec5-48f7-5553-987900b57a11",
    "CaseNumber": 1536311981016,
    "CaseStatus": "New",
    "CampaignID": "66336533-3765-3266-4d43-382f392f3230",
    "CreatedDate": "2018-09-07T09:19:42.586Z",
    "CreatedBy": "f0272467-3ec5-48f7-5553-987900b57a11",
    "ModifiedDate": "2018-09-07T09:19:42.586Z",
    "ModifiedBy": "f0272467-3ec5-48f7-5553-987900b57a11",
    "IsDeleted": false,
    "Source": "Dev",
    "__v": 0
},

Используя ODM в качестве мангуста, вы можете переопределить метод toObject, чтобы задать формат для некоторых атрибутов. Другой вариант - перед этим использовать карту и указать формат с некоторым модулем как momentjs.com

Tzomas 10.09.2018 11:20
1
1
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо этого рассмотрите возможность запуска агрегатного конвейера, который позволяет использовать такие операторы, как $dateToString, которые могут преобразовывать дату в желаемый формат.

Например, тот же запрос, приведенный выше, можно запустить с использованием инфраструктуры агрегирования следующим образом:

let today = new Date();
today.setDate(today.getDate() - 60);

const date = new Date(today);

ODSCase.aggregate([
    { '$match': { 
        'UserGUID': req.UserGUID,
        'CreatedDate': { '$gte': date } 
    } },
    { '$sort': { 'ModifiedDate': -1 } },
    { '$addFields': {
        'CreatedDate': { 
            '$dateToString': { 
                'format': '%m/%d/%Y', 
                'date': '$CreatedDate' 
            }
        }
    } } 
])
.exec()
.then(doc => {
    res.status(200).json(doc);
})
.catch(err => err500.err500(err, req, res, next) );

Вы также можете использовать отличный Библиотека дат JavaScript Moment.js для создания объекта даты, используемого в запросе:

const moment = require('moment');
const date = moment().subtract(60, 'days').toDate(); // or...
const date = moment().add(-60, 'days').toDate();

Привет, chridam! Получаю "Ошибка": "Конвейер агрегации не включен для этого аккаунта. Подробности см. В aka.ms/mongodb-aggregation." . Я пытаюсь включить агрегирование на портале Azure. Я попробую это и дам вам знать. Спасибо

Venkatesh Pinninti 10.09.2018 11:36

Я предполагаю, что вы хотите иметь дело только с форматом даты на выходе, который в настоящее время находится в строке ISO, чтобы сделать его в виде мм / дд / гггг, вы можете попробовать следующее:

var today = new Date();

    today.setDate(today.getDate() - 60);

    ODSCase.find({ UserGUID: req.UserGUID ,CreatedDate:{"$gte":new Date(today)} }).sort({ModifiedDate: -1})
   .exec()
   .then(doc => {
       doc.CreatedDate = new Date(doc.CreatedDate).toLocaleDateString('en-US');
       res.status(200).json(doc);
   })
   .catch(err =>{ err500.err500(err,req,res,next);});

Привет, Ашиш! Никаких изменений в выводе: "CreatedDate": "2018-09-07T09: 19: 42.586Z", с вашим ответом

Venkatesh Pinninti 10.09.2018 11:34

Отредактировано. Произошла опечатка, извиняюсь.

Ashish 10.09.2018 11:35

Другие вопросы по теме