我正在尝试使用async.queue从CSV流中插入MongoDB文档 . 但我面临以下错误 . 我已经尝试过类似SO帖子中提供的所有补救措施 .
确切的错误消息是:
C:\ Users \ admin \ node_modules \ mongodb \ lib \ mongo_client.js:406 throw err TypeError:object不是C:\ Users \ admin \ Desktop \ mynodefile.js中的函数:13:2在C:\ Users \ admin \ node_modules \ mongodb \ lib \ mongo_client.js:403:11 at process._tickCallback(node.js:355:11)
我使用的node.js代码:
var csv = require('csv');
var async = require('async');
var fs = require('fs');
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017', function(err, db) {
if (err) throw err;
var collection = db.collection('myCSVs');
var queue = async.queue(collection.insert.bind(collection), 5);
csv()
.from.path('./input.csv', { columns: true })
.transform(function (data, index, cb) {
queue.push(data, function (err, res) {
if (err) return cb(err);
cb(null, res[0]);
});
})
.on('error', function (err) {
console.log('ERROR: ' + err.message);
})
.on('end', function () {
queue.drain = function() {
collection.count(function(err, count) {
console.log('Number of documents:', count);
db.close();
});
};
});
});
2 回答
您尚未在
MongoClient.connect
函数调用中提及数据库名称 . 你可以这样做:然后你可以这样做:
如果myCSVs是database_name中的集合
或者您也可以这样做:
你必须改变
成:
在这一行:
你用数据和回调调用push,但它没有在你的实现中实现