如何将SQL查询结果存储在JavaScript变量中以在全局范围内使用?

如何将SQL查询结果存储在JavaScript变量中以在全局范围内使用?,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,这里是初学者,我试图将SQL查询的结果存储到JavaScript变量中,以便能够从全局范围访问它,以便在其他代码中使用 代码如下: const latestRunContacts==>{ db.all `选择来自联系人的电子邮件,其中RunID=SELECT MAXUID FROM Run\u tbl`, 错误,行=>{ console.logrow; } ; }; 这会记录我试图获取的值,但一旦我尝试这样做: const latestRunContacts==>{ db.all `选择来自联系

这里是初学者,我试图将SQL查询的结果存储到JavaScript变量中,以便能够从全局范围访问它,以便在其他代码中使用

代码如下:

const latestRunContacts==>{ db.all `选择来自联系人的电子邮件,其中RunID=SELECT MAXUID FROM Run\u tbl`, 错误,行=>{ console.logrow; } ; }; 这会记录我试图获取的值,但一旦我尝试这样做:

const latestRunContacts==>{ db.all `选择来自联系人的电子邮件,其中RunID=SELECT MAXUID FROM Run\u tbl`, 错误,行=>{ 返回行; } ; }; console.loglatestRunContacts; 然后返回未定义的。。。 由于typeof row是一个对象,我尝试声明一个对象,并将SQL查询的结果分配给它,然后立即调用函数,如下所示:

让contactEmail={ 电子邮件:功能延迟联系人{ db.all`SELECT email FROM Contacts\u tbl其中UID='1',err,row=>{ 返回行; }; }, }; console.logcontactEmail.email; 但这也只是返回未定义的


我想做的事可能吗?如果是这样,这与回调和javascript的异步特性有什么关系

解决您的问题的快速方法是:

let latestContacts;
db.all(
  `SELECT email FROM Contacts_tbl WHERE RunID = (SELECT MAX(UID) FROM Run_tbl)`,
  (err, rows) => {
    if (err) throw err;
    latestContacts = rows;
    console.log(latestContacts);
  },
);

我建议阅读这篇文章,总结回调、承诺和异步函数:

它起作用了:这篇文章确实有帮助,添加了回调函数,并将查询结果分配给回调内的变量。