函数中回调的返回值

时间:2017-05-27 13:57:04

标签: node.js asynchronous return synchronous

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

这是我的非工作代码:

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

返回始终为undefined 我知道NodeJS设计用于异步,但异步函数不允许我返回一些东西。我被卡住了,请帮忙!

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

感谢社区!

1 个答案:

答案 0 :(得分:1)

你在控制台时收到任何回报。记录你的回报? 例如:

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

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

new Promise(resolve,reject){
    let data = dbCall();
    if(data == false)
         reject(data);
    else
         resolve(data);
}