sqlite3,每个,并与节点异步

时间:2018-09-18 07:49:25

标签: javascript node.js sqlite

所以-我们大量使用sqlite3,通常我使用 all 进行选择-但是我们遇到的情况是我们有一个很大的数据集(数千万行),我想对其进行处理逐行...遇到了一个似乎无法解决的问题。

如果我愿意

console.log("before");
database.each( "select * from blah", 
    (error, row) => {console.log("during");output.write(row.something);} );
console.log("after");

我看到单词“之前”,“之后”,“期间”。现在的问题是-我需要关闭流-在最后一条记录出现后 。似乎没有办法确定这一点,或者在发生这种情况时获取回调。

我想念什么吗?几乎每次有人迭代基本上是游标的时候,他们都需要一种方法来知道何时完成-据我所知-使用当前的javascript实现是完全不可能的,这使得成为可能。每个基本上不可用。

请告诉我我错了?

1 个答案:

答案 0 :(得分:0)

您可以在db.each函数中使用完成回调,例如-

console.log("before");

database.each( "select * from blah", (error, row) => {
    console.log("during");
    output.write(row.something);
}, (err, count) {
    // close your stream here or use a promise and resolve it from here
    stream.close();
}));

console.log("after");