forEach中的节点惰性和异步函数



我尝试用(大约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处理异步是否可能,我在文档中没有找到,也许这是不可能的。

我知道它已经过期几个月了,但仅供参考,有人在这里回答了这个问题:

节点和懒惰:我怎么知道它是什么时候的';完成了吗?

相关内容

  • 没有找到相关文章

最新更新