使用nodejs

时间:2016-02-22 06:52:14

标签: javascript node.js mongodb csv

我对mongodb和nodejs很新。这是我发现难以执行的任务,我想通过nodejs解析.CSV文件并将数据推送到Mongodb。我使用 fast-csv 库通过nodejs读取了csv数据,但我很难将其推入mongodb。

我尝试了以下代码。

 var fs= require('fs');
var csv = require('fast-csv');

var mongodb = require('mongodb');
var url = 'mongodb://localhost:27017/insertDB';
var MongoClient = mongodb.MongoClient;


var data;
var readData=fs.createReadStream('x.csv').pipe(csv()).on('data',function(data){
    console.log(data);
})
.on('end',function(data){
    console.log('Read finished');
})


  MongoClient.connect(url, function (err, db) {
    if (err) {
      console.log('Unable to connect to the mongoDB server. Error:', err);
    } else {
      console.log('Connection established to', url);
      var collection = db.collection('airports');
      collection.insert(data);
  }
  });

我的控制台正在打印数据。我在控制台中的错误显示为无法读取未定义的属性_id 我尝试更改上面的代码将数据库连接放在else部分中,我收到此错误无法分配给只读属性&# 39; _id' csv文件中的字段名称你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

读取流中的

data是来自回调data的{​​{1}}。插入后面的function(data)data,它是空的

答案 1 :(得分:0)

试试这个

var fs= require('fs');
var csv = require('fast-csv');

var mongodb = require('mongodb');
var url = 'mongodb://localhost:27017/insertDB';
var MongoClient = mongodb.MongoClient;


var data;

MongoClient.connect(url, function (err, db) {
    if (err) {
      console.log('Unable to connect to the mongoDB server. Error:', err);
    } else {
      console.log('Connection established to', url);
      var collection = db.collection('airports');
      readData=fs.createReadStream('x.csv').pipe(csv())
                   .on('data',function(data){
                      collection.insert({'data': data});
                   })
                   .on('end',function(data){
                      console.log('Read finished');
                   })

    }
  }); //End of Mongo connect