2014-11-25 22 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