如何在此异步调用中返回值?

时间:2019-10-08 13:51:09

标签: javascript node.js node-sqlite3

我正在尝试检查用户名是否在node.js应用程序中使用。由于某些原因,我执行“ db.get ..”后无法设置变量。我希望能够根据名称是否被使用或是否有错误来设置“ taken”。

我对异步调用不是很熟悉,而且我不确定这到底是异步的。我已经读过关于异步调用herehere的内容,但仍然无法解决。我很难在代码中实现它。

我正在使用sqlite3和本地数据库文件对其进行测试。

function isUsernameTaken(username) {
    console.log("checking username");
    query = "SELECT * FROM `account` WHERE username = ?";
    let taken = true
    db.get(query, [username], function(error, post){
        if(error){
            console.log("error: "+ error);
            taken = 500;
        }
        else{
            console.log("the post: " +post);
            if(post === undefined || post.length == 0 || !post){
                taken = false  
            }
        }
    })
    console.log("Name taken?: " +taken);
    return taken;
}

我希望能够返回采用的变量,但它始终返回为

  

true

0 个答案:

没有答案