Javascript Node.js和csv express日期格式

Javascript Node.js和csv express日期格式,javascript,node.js,express,Javascript,Node.js,Express,使用csv express导出到csv时,是否有方法格式化日期“YYYY-MM-DD”?我在谷歌上搜索了很长时间,但什么也没找到。我使用的是Node.js、Express和MongoDB的最新版本 这是默认日期格式:“2018年8月9日星期四00:00:00 GMT-0700(太平洋夏令时)”。我只想要这个“2018-09-09” 我的问题是: router.get('/exportMonthlyPosts', (req, res) => { posts.find({...}, {i

使用csv express导出到csv时,是否有方法格式化日期“YYYY-MM-DD”?我在谷歌上搜索了很长时间,但什么也没找到。我使用的是Node.js、Express和MongoDB的最新版本

这是默认日期格式:“2018年8月9日星期四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
  } 
]

谢谢大家!

你试过这个吗<代码>时刻JS

这是一个很酷的模块

你可以这样做

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);

   });
});

你试过这个吗<代码>时刻JS

这是一个很酷的模块

你可以这样做

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);

   });
});

您可以将
报告
转换为新数据,其中所有日期均替换为字符串:

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

即可将
报告
转换为一个新数据,其中所有日期都由字符串替换:

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

只需在导出数据之前对其进行转换。嗨,勒克斯,谢谢您的回复。我正在学习node.js,你能提供同样的代码吗?我将更新我的问题以包含我的查询。可能会显示您的代码如何导出。请查看更新的问题,谢谢。只需在导出数据之前转换数据。嗨,勒克斯,谢谢您的回复。我正在学习node.js,你能提供同样的代码吗?我将更新我的问题以包含我的查询。可能会显示您的代码如何导出它。请查看更新的问题,谢谢。嗨,seunggabi,我目前正在该项目中使用矩.js。我尝试过这样做(moment(newdate(postedOn).format(“YYYY-MM-DD”):1)在我的选择中,但它不起作用。我是Node.js新手,不太确定在哪里应用你的建议。如果你能提供示例代码,我将不胜感激。好的,请在你的代码中向我提供关于
post
的详细信息。我不知道post-json。谢谢你,这对我来说是完美的工作。谢谢你的示例!嗨seunggabi,我是目前正在这个项目中使用moment.js。我尝试过这样做(moment(newdate(postedOn).format(“YYYY-MM-DD”):1)在我的选择中,但它不起作用。我是Node.js新手,不太确定在哪里应用你的建议。如果你能提供示例代码,我将不胜感激。好的,请在你的代码中向我提供关于
post
的详细信息。我不知道post-json。谢谢你,这对我来说非常有用。谢谢你的示例!