2014-11-25 66 views
0

這裏是我的功能我想返回我從返回功能未定義從model.find()

var setUser = function(Email){ 
    UserModel.findOne({email : Email}, function(err, data){ 
     if(err) { 
      return Hapi.error.badRequest('There is no this user'); 
     } 
     console.log(data); 
     return data; 
    }); 
}; 

的執行console.log(數據);顯示找到的結果。但是,當我使用這個功能

console.log(setUser('[email protected]')); 

此日誌得到了不確定的,從函數返回。但登錄功能有數據。

回答

0

.findOne異步執行,你不能從回調函數返回......不會去任何地方。相反,您需要執行以下操作:

setUser('[email protected]', console.log) 

var setUser = function (Email, callback) { 
     // .. snip 
     callback(data); 
} 
+0

我想保留setUser('[email protected]');到我的var; 示例var data = setUser('[email protected]'); var數據未定義。 我不明白如何使用您的解決方案。 非常感謝。 – 2014-11-25 14:13:34

+1

@SucheepSriintra您需要在JavaScript /節點中對回調進行異步請求。只需做一些關於回調的閱讀。你甚至可以在'UserModel.findOne'中使用一個(第二個參數是一個回調) – 2014-11-25 14:14:14