node.js - 函数不返回数据

标签 node.js redis serverside-javascript

我有以下代码

    var redis = require("redis"),
    client = redis.createClient();

var getuser = function(username) {
  var userhash={};
  client.hgetall("users."+username, function(err, user) {
    userhash=user;
  });
  return userhash;
};
user_rahul = { 
     username: 'rahul',
     queueno: 1,
     sessionId: '6604353811126202'

   };
user_namita = {
  username: 'namita',
  sessionId:'2'
};
client.hmset('users.rahul', user_rahul);
client.hmset('users.namita', user_namita);
var username = "rahul"; // From a POST perhaps
  var user1=getuser(username);
  console.log(user1);
client.hgetall("users." + username, function(err, user) {
  console.log(user);

});

我已经创建了一个 getuser 函数来返回 userhash 中特定用户名的值,但它没有返回,请帮助找出它没有返回的原因。 我应该怎么做才能获得值(value)返回?

最佳答案

当您在同步 getUser 函数中进行异步调用时,您混合了同步和异步模式。您需要使您的 getUser 函数异步 - 例如:

var redis = require("redis"),
    client = redis.createClient();

var getuser = function(username, cb) {
  client.hgetall("users."+username, cb);
};

user_rahul = { 
     username: 'rahul',
     queueno: 1,
     sessionId: '6604353811126202'

   };
user_namita = {
  username: 'namita',
  sessionId:'2'
};

client.hmset('users.rahul', user_rahul);
client.hmset('users.namita', user_namita);
var username = "rahul"; // From a POST perhaps
getuser(username, function(err, res){
     console.log(res);
 });
client.hgetall("users." + username, function(err, user) {
  console.log(user);
});

关于node.js - 函数不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214861/

相关文章:

适用于 Windows 的 Redis 哨兵

node.js - 如何检测用户的连接丢失或他关闭了 Nodejs socket.io 中的浏览器窗口

javascript - 除了可扩展性之外,还有哪些使用 node.js 的架构原因?

node.js - 错误!安装 vue-cli 时编码 EPERM

javascript - Laravel 5 扩展 Elixir 以包含 browserify

node.js - 使用 Mocha 循环回调返回的数组

node.js - 如何在 Node 后端使用浏览器库

node.js - 使用身份感知代理在 Node js App Engine 环境中获取用户 API 访问权限

url - nginx/redis 和处理 url 中的跟踪参数

java - 在 Redis 中使用引号存储值