节点CSVparsing器输出问题

我正在尝试使用Node CSVparsing器从我的Mongo数据库中读取查询结果,并将其写入到csv文件中。

当我运行我的脚本,我得到一个csv文件,第一行有两个[对象]条目,其他一切都是空白的。

这是我的代码:

// node samples/sample.js var csv = require('csv'); var mongoose = require('mongoose'); var User = require('../models/userModel').User; dsn = "mongodb://localhost/test"; mongoose.connect(dsn); console.log ("here"); var users = User.find({}, function(err, result){ console.log(result); }); var columns = ['userName','agencyName','email','password','id']; csv() .from(users, { columns: true }) .toPath(__dirname+'/users.csv',{ columns: ['userName','agencyName','email','password','id'] }) .transform(function(data){ data.unshift(data.pop()); return data; }) .on('data',function(data,index){ console.log('#'+index+' '+JSON.stringify(data)); }) .on('end',function(count){ console.log('Number of lines: '+count); }) .on('error',function(error){ console.log(error.message); }); 

这是在terminal显示的数据:

 [ { userName: 'LasVegas', agencyName: 'City of Las Vegas', email: 'lasvegas@gmail.com', password: 'upload1', _id: 4ffe2e6bddc0c02b15000001 } ] 

我只有一个用户进入数据库,所以我相信这是正确的。

任何帮助将不胜感激!

编辑:

这是我的代码在尝试调用callback中的csv之后:

 // node samples/sample.js var csv = require('csv'); var mongoose = require('mongoose'); var User = require('../models/userModel').User; dsn = "mongodb://localhost/test"; mongoose.connect(dsn); console.log ("here"); var columns = ['userName','agencyName','email','password','id']; var users = User.find({}, function(err, result){ console.log(result); if (err){ callback(err,null); }else{ csv() .from(users, { columns: true }) .toPath(__dirname+'/users.csv',{ columns: ['userName','agencyName','email','password','id'] }) .transform(function(data){ data.unshift(data.pop()); return data; }) .on('data',function(data,index){ console.log('#'+index+' '+JSON.stringify(data)); }) .on('end',function(count){ console.log('Number of lines: '+count); }) .on('error',function(error){ console.log(error.message); }) } }); 

现在,而不是两个[对象]字段,这些字段包含奇怪的符号,我被要求在打开文件时select一个filter。

你对User.find()调用是asynchronous的。 它不会将search结果分配给users 。 您需要将呼叫转移到callback中,并将results users引用replace为users ,或者将回叫参数重命名为users