2016-02-26 69 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