首页 > 解决方案 > 如何使用 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');
});

标签: javascriptnode.jssqlite

解决方案


await只能在async函数内部使用。创建一个异步函数,在这个函数内部,等待函数promise返回request

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

并且您需要从函数返回承诺,request以便可以等待它

function request (req) {
    return new Promise(function (resolve, reject) {
        // code
    });
}

推荐阅读