Есть ли способ отформатировать дату «ГГГГ-ММ-ДД» при экспорте в 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
}
]
Спасибо!
Привет, Люкс, спасибо за ответ. В настоящее время я изучаю node.js, можете ли вы предоставить тот же код? Я обновлю свой вопрос, включив в него свой запрос.
может быть, покажите свой код, как вы его экспортируете
Пожалуйста, просмотрите обновленный вопрос, спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пробуете это? momentjs
Это классный модуль.
Ты можешь сделать это.
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 и не совсем уверен где применить ваше предложение. Если вы предоставите образец кода, мы будем очень признательны.
хорошо, предоставьте мне подробную информацию о post в вашем коде, пожалуйста. Я не знаю сообщения json.
Спасибо, у меня эта работа отлично работает. Спасибо за пример!
вы можете преобразовать ваш 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.
просто преобразуйте данные перед их экспортом.