javascript - 如何使用 async/await 从 sqlite db.each 获取数据

标签 javascript node.js sqlite

我想使用 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 内使用功能。创建一个异步函数,在这个函数内部,等待 promiserequest 返回功能

async function makeRequest() {
    data = await request("select * from user ");
}

你需要从request返回 promise 函数,以便它可以等待
function request (req) {
    return new Promise(function (resolve, reject) {
        // code
    });
}

关于javascript - 如何使用 async/await 从 sqlite db.each 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61956386/

相关文章:

javascript - 如果提到的输入框是使用 jquery 填充的,则启用按钮?

javascript - 在nodejs中从post请求解析json文件的最佳方法

javascript - 如何使用NodeJS删除DocumentDB中的所有文档?

java - 更新表中的确定字段

Android SQLite 插入 2 行相同的 id

javascript - 游戏网站需要修复故障

javascript - 在没有花括号的 JavaScript 中使用一行 for 循环是否正确?

javascript - 如何在 CKEditor5 中创建一个 Matcher 实例?

node.js - fs.readFile 后关闭文件,清零

sql - SQL 表中的滚动行