2016-02-26 46 views
0

我是新来的节点js,我使用restify和猫鼬。所以,当我找到数据时,我尝试返回一些值,并在数据未找到时返回null。这里是我的代码:不能返回查询以外的值。猫鼬

getUsers = function (user, pass, urole){ 
     var data = ''; 
     Publisher.findOne({username:user, password:pass, role:urole},function(err, success){ 
     if (err){} 
     if (!success){ 
      //when data not found 
      data = 'null'; 
     }else{ 
      //when data found 
      data = 'found'; 
     } 
    }); 
    return data; 
} 

我想调用函数并赋值给变量。

var user = getUsers(user,pass,urole) 
console.log(user) 

但结果是未定义的。

回答

0

findOne是异步函数,请把return data步入回调函数,也可以通过回调函数返回日期

getUsers = function (user, pass, urole, callback){ 
     var data = ''; 
     Publisher.findOne({username:user, password:pass, role:urole},function(err, success){ 
     if (err){} 
     if (!success){ 
      //when data not found 
      data = 'null'; 
     }else{ 
      //when data found 
      data = 'found'; 
     } 
     callback && callback(data); 
    }); 
} 

getUsers(user, pass, urole, function(data) { 
    console.log(data); 
}); 
+0

我已经尝试过这一点。但是当我调用函数getUsers,如: var data = getUsers(username,password,role); console.log(data); 它保持返回“未定义”。 :'( – lutfi

+0

@lutfi,对不起,以前的错误,我已经更新了我的答案... – zangw

+0

感谢您的回复:D,...还有一件事,可以将变量数据存储到其他变量? ,因为我想用它在其他功能 例如,我想把变量“数据”var“xxx” 我怎么可以分配数据的值到xxx?谢谢反正 – lutfi