节点异步数据库调用返回承诺

时间:2021-01-01 16:20:41

标签: javascript node.js sqlite asynchronous

我正在使用 sqlite 作为我的数据库的节点项目。

function select_from_table(tablename, limit) {

  let arr = [];
  let sql = `SELECT id FROM ${tablename} WHERE Type='Real' LIMIT ${limit}`;
   db.each(sql, function (err, row) {
    console.log(row.PropertyId);
    arr.push(row.PropertyId);
  });
  return arr;
}

当我跑步时:

console.log(select_from_table('myData', 4));

我得到'[]'

逐步执行此操作,我看到控制权正确返回数组,然后返回到上面的循环执行选择,因此永远不会返回 arr。然后我尝试:

async function select_from_table(tablename, limit) {

  let arr = [];
  let sql = `SELECT id FROM ${tablename} WHERE Type='Real' LIMIT ${limit}`;
   await db.each(sql, function (err, row) {
    console.log(row.PropertyId);
    arr.push(row.PropertyId);
  });
  return await arr;
}

但这会返回一个承诺。返回所选结果的最佳方法是什么?

0 个答案:

没有答案
相关问题