Node.js и csv-express формат даты - PullRequest
       2

Node.js и csv-express формат даты

0 голосов
/ 08 сентября 2018

Есть ли способ отформатировать дату "ГГГГ-ММ-ДД" при экспорте в csv с помощью csv-express? Я гуглил это в течение достаточно долгого времени, но ничего не нашел. Я использую последнюю версию Node.js, Express и MongoDB.

Это формат даты по умолчанию: «Чт. Авг 09 2018 00:00:00 GMT-0700 (Тихоокеанское летнее время)». Я просто хочу это "2018-09-09".

Вот мой запрос:

router.get('/exportMonthlyPosts', (req, res) => {
   posts.find({...}, {id:1, title:1, post:1, postedOn:1}).sort(orderBy).lean()
    .then(post => {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/csv');
        res.setHeader("Content-Disposition", 'attachment; filename=posts.csv');
        res.csv(report, true);

   });
});

пример данных:

[
  { 
    _id: 5b64c23eef5b9c5c60fa42a0,
    title: 'Test Post',    
    post: 'Show me the money!',
    postedOn: 2018-08-29T00:00:00.000Z
  },
  { 
    _id: 5afb58408341f161a0c96608,
    title: 'Test Post 2',    
    post: 'Show me the money!',
    postedOn: 2018-08-29T00:00:00.000Z
  } 
]

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

вы можете преобразовать report в новые данные, в которых все даты заменены на строки:

const transformed = report.map(line => Object.entries(line).reduce((acc, [key, val]) => {
  acc[key] = val instanceof Date ? moment(val).format("YYYY-MM-DD") : val;
  return acc;
}, {}));

, тогда просто используйте transformed вместо report.

0 голосов
/ 08 сентября 2018

Вы пробуете это? momentjs

Это классный модуль.

https://momentjs.com/

Вы можете сделать это.

router.get('/exportMonthlyPosts', (req, res) => {
   posts.find({...}, {id:1, title:1, post:1, postedOn:1}).sort(orderBy).lean()
    .then(post => {
        // update postedOn.
        report.forEach((r) => {
            r.postedOn = moment(r.postedOn).format("YYYY-MM-DD")
        });

        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/csv');
        res.setHeader("Content-Disposition", 'attachment; filename=posts.csv');
        res.csv(report, true);

   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...