我尝试用(大约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++;
}
})
}
)
所以没有错误,但计数<实际记录(行)计数;
所以我想知道解决这个问题的最佳方法是什么。
UPD:
我在forEach中使用syncronios解析函数解决了这个问题,然后当文件被完全读取时,我用async.mapSeries将数据保存到mongodb中。
但我仍然想知道用node lazy处理异步是否可能,我在文档中没有找到,也许这是不可能的。
我知道它已经过期几个月了,但仅供参考,有人在这里回答了这个问题:
节点和懒惰:我怎么知道它是什么时候的';完成了吗?