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

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

Это формат даты по умолчанию: «Thu Aug 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
  } 
]

Спасибо!

просто преобразуйте данные перед их экспортом.

Lux 08.09.2018 01:30

Привет, Люкс, спасибо за ответ. В настоящее время я изучаю node.js, можете ли вы предоставить тот же код? Я обновлю свой вопрос, включив в него свой запрос.

user752746 08.09.2018 01:34

может быть, покажите свой код, как вы его экспортируете

Lux 08.09.2018 01:36

Пожалуйста, просмотрите обновленный вопрос, спасибо.

user752746 08.09.2018 01:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
824
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы пробуете это? 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);

   });
});

Привет, seunggabi, в настоящее время я использую moment.js в этом проекте. Я пробовал сделать что-то вроде этого (moment (new Date (postedOn) .format ("YYYY-MM-DD"): 1) в моем выборе, но это не сработало. Я новичок в Node.js и не совсем уверен где применить ваше предложение. Если вы предоставите образец кода, мы будем очень признательны.

user752746 08.09.2018 01:40

хорошо, предоставьте мне подробную информацию о post в вашем коде, пожалуйста. Я не знаю сообщения json.

seunggabi 08.09.2018 01:43

Спасибо, у меня эта работа отлично работает. Спасибо за пример!

user752746 10.09.2018 18:15

вы можете преобразовать ваш 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.

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