1

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

4

1 回答 1

0

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

节点和懒惰:我怎么知道它什么时候完成?

于 2013-11-19T00:31:52.943 回答