как заставить всех пользователей в redis - PullRequest
2 голосов
/ 03 июня 2011

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

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


user_rahul = { 
     username: 'rahul'

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

Я хочу получить список всех пользователей, как я могу получить список всех пользователей, это то, что я пробовал, но это не работает.

Ответы [ 3 ]

5 голосов
/ 03 июня 2011

Вы устанавливаете пользователей в их собственный хеш, поэтому, когда вы делаете hgetall пользователей, вы пытаетесь получить все члены хэша пользователей. Вы должны сделать:

var redis = require("redis"),
client = redis.createClient();
user_rahul = { 
    username: 'rahul'
};
user_namita = {
    username: 'namita'
};
client.hset('users', user_rahul, 'Another Value, Pass Maybe?');
client.hset('users', user_namita, 'Another Value, Pass Maybe?');
var username = "rahul"; // From a POST perhaps
client.hgetall("users" , function(err, user) {
    console.log(user);
});

Вам следует рассмотреть возможность использования списка, если вам не нужны никакие данные во втором хэш-значении

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

Как насчет этого

var flow = require('flow'); //for async calls
var redis = require("redis").createClient();

function AddUser(user,callback){
 flow.exec(
   function(){
     //AI for Keep unique
     redis.incr('nextUserId',this);
   },
   function(err,userId){
     if(err) throw err;
     this.userId = userId;
     redis.lpush('users',userId,this.MULTI()); 
     redis.hmset('user:'+userId+':profile',user,MULTI());
   },
   function(results){
      results.forEach(function(result){
    if(result[0]) throw result[0];
      });

     callback(this.userId);
   }
 );
}

user_rahul = {username: 'rahul'};
user_namita = {username: 'namita'};

//Add user
AddUser(user_rahul,function(userId){
    console.log('user Rahul Id' + userId);

});

AddUser(user_namita,function(userId){
    console.log('user Namita Id' + userId);

});


//users

function Users(callback){
var users = [];

 flow.exec(
    function(){
      redis.lrange('users',0,-1,this);
    },
    function(err,userIds){
      if(err) throw err;

     flow.serialForEach(userIds,function(userId){
        redis.hgetall('user:'+userId+':profile',this);
     },
     function(err,val){
       if(err) throw err;
       users.push(val);
     },
     function(){
      callback(users);
     });
    } 
 );
}


//call
Users(function(users){
   console.log(users);
});
0 голосов
/ 28 июня 2011

для одного пользователя

function getUser(userId,callback){
 redis.hgetall('user:'+ userId +':profile',function(err,profile){
        if(err) throw err;
        callback(profile);  
    });
}   

getUser(1,function(profile){
    console.log(profile);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...