【问题标题】:Node CSV Parser output issue节点 CSV 解析器输出问题
【发布时间】:2012-07-19 02:09:53
【问题描述】:

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

当我运行我的脚本时,我得到一个 csv 文件,第一行有两个 [object] 条目,其他所有内容都是空白的。

这是我的代码:

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

这是终端显示的数据:

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

我只在数据库中输入了一个用户,所以我相信它是正确的。

任何帮助将不胜感激!

编辑:

这是我尝试在回调中调用 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);
})
}
});

现在不是两个 [object] 字段,而是这些字段包含奇怪的符号,并且在打开文件时要求我选择一个过滤器。

【问题讨论】:

    标签: parsing node.js mongodb csv mongoose


    【解决方案1】:

    您对User.find() 的调用是异步的;它没有将搜索结果分配给users。您需要将您对 csv 的调用移动到回调中,并将那里对 users 的引用替换为 results 或将回调参数重命名为 users

    【讨论】:

    • 我想我成功地将对 csv 的调用移到了回调中,但我的输出仍然不正确。
    • 想通了,一切正常。再次感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多