如何从对sqlite3.Database.all方法的调用中检索数据?

时间:2018-08-10 22:06:40

标签: javascript sqlite

这是一个非常基本的问题(可能是一个重复的问题),但是我正在尝试使用javascript interface to sqlite3进行sql查询。文档提供了进行查询的示例,但它们仅将数据打印到控制台。我想将数据存储在一个新变量中,然后继续(最终)使用d3绘图。

这是我到目前为止所拥有的。我在某处读到this关键字在这里可能有用。请假设db是到sqlite3数据库的开放连接,而sql是一些有效的sql。

var data = db.all(sql, [], function(err, rows) {
    if (err) {
        throw err;
    }

    this.data = [];
    rows.forEach((row) =>{
        this.data.push(row);
    });
});

1 个答案:

答案 0 :(得分:1)

rows保留sql查询中的所有数据。您必须将一个函数传递给db.all 采用参数(err, rows)。检索数据后将调用此函数。

听起来好像对如何访问传递的函数范围之外的数据感到困惑:

function(err, rows) {
    if (err) {
        throw err;
    }

    this.data = [];
    rows.forEach((row) =>{
        this.data.push(row);
    });
}

为此,您可以在其作用域之外定义变量以对其进行编辑并为其赋值。

this.data将不起作用,因为this指的是您无法访问function(err, rows)之外的匿名db.all

您还可以按照评论中的说明将信息发送到前端