从函数中的回调返回值

L.X*_*L.X 2 asynchronous return synchronous node.js

您好,我想返回一个带有选项的简单布尔值: - true:用户存在于数据库中 - false:用户不存在于数据库中

这是我的非工作代码:

database.users.get("test-username", function (err, value) {
    if (err) {
        return err;
    } else {
        return value;
    }
})
Run Code Online (Sandbox Code Playgroud)

返回总是undefined 我知道 NodeJS 旨在异步工作,但是异步函数不允许我返回某些内容。我卡住了,请帮忙!

另外,我LevelUP用作数据库系统。(如果我的问题没有解决方案,NodeJS 中是否还有其他允许同步的数据库系统?)

感谢社区!

Leo*_*eon 5

当你 console.log 你的回报时,你会得到什么吗?例如:

function dbCall(){    
database.users.get("test-username",function(err, value){
     if(err){
          return false;
     }else{
         console.log(value);
         return value;
     }
}
}
Run Code Online (Sandbox Code Playgroud)

如果你得到了一些有价值的东西,那么你看不到任何回报的原因是因为 api 调用是异步的。你必须做出承诺。

new Promise(resolve,reject){
    let data = dbCall();
    if(data == false)
         reject(data);
    else
         resolve(data);
}
Run Code Online (Sandbox Code Playgroud)