所有。我在node_redis模块中实现findBy(“name”,“password”),然后执行此操作。
// return user find by name and password.
User.findBy = function(name,password){
console.log("calllelelelelll");
var res;
db.lrange("users",0,-1,function(err,users){
users.forEach(function(item){
var u = JSON.parse(item);
if ((u.name == name) && (u.password == password)){
res = u;
}
});
console.log(res);
return res;
});
};
###app.js
User.findBy(user.name,user.password);
但是,User.findBy(user.name,user.password)函数返回undefined,记录了console.log(res)
喜欢{name:“nobinobiru”,密码:“harashin0219”}
我想知道为什么findBy函数返回res未定义,但console.log(res)
正常工作。请帮忙。
提前致谢。
答案 0 :(得分:1)
您正在从db.lrange
回调中返回res,该回调不执行任何操作。如果lrange函数不是非同步的,那么你需要将return语句向下移动到回调之后,所以它实际上是findBy()
的返回值。
但是,如果db.lrange
函数是异步的(我猜它可能是),那么你就无法从中获取值并进入调用函数。相反,任何想要将其返回的值用于成功处理程序回调的内容都需要在回调函数中或从回调函数调用。