【问题标题】:sqlite3, each, and async with nodesqlite3,每个,和与节点异步
【发布时间】:2018-09-18 17:04:41
【问题描述】:

so - 我们大量使用 sqlite3,通常我使用 all 来选择 - 但我们有一个情况,我们有一个大数据集(数千万行),我想处理它行逐行...并遇到了似乎无法克服的问题。

如果我这样做

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

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

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

请告诉我我错了吗?

【问题讨论】:

标签: javascript node.js sqlite


【解决方案1】:

您可以在 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");

【讨论】:

    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多