Express JS + Mongoose与不同的csv模块发送错误的数据

时间:2015-06-09 10:42:19

标签: node.js mongodb csv

我正在使用此模块:https://github.com/nulltask/express-csv (还试了几次)

       MyModel.find(mquery,function(err, list){
            if(err){
                console.log(err);
                var response = {
                    success: false,
                    data: null
                };
                res.json(response);
            }else{
                console.log(list);
                res.setHeader('Content-disposition', 'attachment; filename=mylist.csv');
                res.csv(list);
            }
        });

问题是csv文件中呈现的内容。 它是Mongoose的模型本身。但是在控制台上记录实际数据。

任何提示?

更新

显然它是在CSV文件中呈现的静态JSON数据,所以必须是同步的东西....

1 个答案:

答案 0 :(得分:0)

mongoose查询返回一个Document,而不是一个简单的对象,尽管在他们的文档中没有明确说明(stackoverflow.com/a/14504387/3366809)。这会使express-csv或任何试图遍历它的东西混乱。在查询中使用lean()返回对象而不是Document。

var myquery = MyModel.find(mquery);
myquery.lean().exec(function(err, list) {
  if (err) {
    console.log(err);
    var response = {
      success : false,
      data : null
    };
    res.json(response);
  } else {
    console.log(list);
    res.setHeader('Content-disposition', 'attachment; filename=mylist.csv');
    res.csv(list);
  }
});