функция не возвращает данные - PullRequest
0 голосов
/ 02 июня 2011

У меня есть следующий код

    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, но он не возвращается, пожалуйста, помогите узнать, почему он не возвращается. что я должен сделать, чтобы получить возвращаемое значение?

1 Ответ

2 голосов
/ 02 июня 2011

Вы смешиваете шаблоны синхронизации и асинхронности, когда выполняете асинхронный вызов в своей функции 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);
});
...