0

全部。我在 node_redis 模块中实现 findBy("name","password") ,遵循此。

用户.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) 函数返回 undefined ,console.log(res) 被记录

喜欢{名称:“nobinobiru”,密码:“harashin0219”}

我想知道为什么 findBy 函数返回 res 未定义,但console.log(res)工作正常。请帮忙。

提前致谢。

4

1 回答 1

1

您正在db.lrange从不执行任何操作的回调中返回 res。如果 lrange 函数不是异步的,那么您需要将 return 语句向下移动到回调之后,因此它实际上是 from 的返回值findBy()

但是,如果db.lrange函数是异步的(我猜它可能是异步的),那么您就无法从中获取值并进入调用函数。相反,任何想要在成功处理程序回调中使用它返回的值的东西都需要在回调函数中或从回调函数中调用。

于 2012-08-04T03:26:00.250 回答