所以-我们大量使用sqlite3,通常我使用 all 进行选择-但是我们遇到的情况是我们有一个很大的数据集(数千万行),我想对其进行处理逐行...遇到了一个似乎无法解决的问题。
如果我愿意
console.log("before");
database.each( "select * from blah",
(error, row) => {console.log("during");output.write(row.something);} );
console.log("after");
我看到单词“之前”,“之后”,“期间”。现在的问题是-我需要关闭流-在最后一条记录出现后 。似乎没有办法确定这一点,或者在发生这种情况时获取回调。
我想念什么吗?几乎每次有人迭代基本上是游标的时候,他们都需要一种方法来知道何时完成-据我所知-使用当前的javascript实现是完全不可能的,这使得成为可能。每个基本上不可用。
请告诉我我错了?
答案 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");