all。我在node_redis模块上实现了findBy("name","password"),然后执行此操作。
user.js
// 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)函数返回未定义,console.log(res)被记录
类似{名称:"nobinobiru",密码:"harashin0219&"}
我想知道为什么findBy函数返回res是未定义的,但console.log(res)
工作正常。请帮忙。
提前谢谢。
您正在从db.lrange
回调返回res,但该回调不会执行任何操作。如果lrange函数不是异步的,那么您需要将return语句下移到回调之后,这样它实际上就是findBy()
的返回值。
但是,如果db.lrange
函数是异步的(我猜可能是异步的),那么您就无法从中获取值并将其输入到调用函数中。相反,任何想要将其返回的值用于成功处理程序回调的东西都需要在回调函数中或从回调函数中调用。