我尝试使用(大约 50 000 行)读取文件并在 mongodb 中解析后保存每一行。Mongodb保存功能是异步的。为了遍历文件,我使用 node-lazy 模块。
我得到的是只有一部分记录保存在 mongodb 中(不是所有函数都调用保存回调)
var stream = fs.createReadStream(inputFile)
new lazy(stream)
.lines
.map(String)
.forEach(function(line){
db[collection].save(parseLine(line), function(err){
if (err){
console.log(err)
} else {
count++;
}
})
}
)
所以没有错误,但是 count < 实际记录(行)计数;
所以我想知道解决这个问题的最佳方法是什么。
升级版:
我通过在 forEach 中使用 syncronios 解析函数解决了这个问题,然后当文件被完全读取时,我使用 async.mapSeries 将数据保存到 mongodb。
但是我仍然想知道是否可以使用 node-lazy 处理异步,我在文档中没有找到它,也许它只是不可能。