javascript - 如何使用 async/await 从 sqlite db.each 获取数据
问题描述
我想使用 promise 对象和 async/await 从 sqlite db.each 函数中获取我的数据,但我不太明白如何去做,我想要一些解释
我的代码如下:
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./data.sqlite', (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the database');
});
function request (req) {
new Promise(function (resolve, reject) {
db.each(req, function (err, row) {
if (err)
reject(err);
else
data.push(row);
}, function (err, n) {
if (err) {
reject(err);
}
else
resolve(data);
});
});
}
data = await request("select * from user "); //I'm getting errors here
db.close((err) => {
if (err) {
return console.error(err.message);
}
console.log('Close the database connection');
});
解决方案
await
只能在async
函数内部使用。创建一个异步函数,在这个函数内部,等待函数promise
返回request
async function makeRequest() {
data = await request("select * from user ");
}
并且您需要从函数返回承诺,request
以便可以等待它
function request (req) {
return new Promise(function (resolve, reject) {
// code
});
}
推荐阅读
- r - dplyr::mutate 时间戳
- git - 配置 git-lfs 以跟踪超过一定大小的文件
- php - array_push() 期望参数 1 是带有 json 文件的数组
- c# - 使用“new”的 C# 结构仍在堆栈或堆上?
- react-native - 是否有任何应用程序可以为 Windows 操作系统构建反应原生 ui
- pandas - Pandas Chanining:有绩效福利吗?
- javascript - 数组中的字符串包含公共子字符串 javascript
- javascript - 通过 onclick 向 javascript 发送变量时未捕获的引用错误
- node.js - angular 7 到 angular 8 迁移后 chartjs 的错误
- javascript - 带有反应钩子的样式化组件