Здесь я добавляю набор users
. У каждого user
есть userID
и socketID
:
socket.on('login', function(userID){
console.log('io.sockets.on -- socket.on -- userID: ' + userID);
console.log('socket.id = ' + socket.id);
var user = userID;
// add first user
redis.sadd("users", user);
redis.hmset(user, "socketID", socket.id, "userID", userID);
});
Здесь я пытаюсь получить все users
в наборе и перебрать их:
// Get the list of online users and show Presence
redis.smembers("users", function(err,results) {
var onlineUsers = results;
console.log("onlineUsers = " + onlineUsers);
for (var onlineUser in onlineUsers) {
console.log("onlineUser = " + onlineUser);
var userID = redis.hget(onlineUser,"userID", function(err,reply) {
console.log("onlineUser hget: " + reply);
data = JSON.parse(reply);
console.log("data: " +data);
});
});
И вот логи:
16:41:15 web.1 | onlineUsers = user:AuY0Uopq6X,user:YbgtwQs8Vt
16:41:16 web.1 | onlineUser = 0
16:41:16 web.1 | onlineUser = 1
16:41:16 web.1 | onlineUser hget: null
16:41:16 web.1 | data: null
16:41:16 web.1 | onlineUser hget: null
16:41:16 web.1 | data: null
Меня очень смущает node-redis и то, как просто получить userID
s. Я знаю, что они там, потому что onlineUsers
содержит их, но тогда я делаю что-то не так в итерации!
РЕДАКТИРОВАТЬ
Я попытался использовать redis-cli
, и ключ есть:
redis 127.0.0.1:6379> SMEMBERS users
1) "user:AuY0Uopq6X"
2) "user:YbgtwQs8Vt"
redis 127.0.0.1:6379> HKEYS "user:AuY0Uopq6X"
1) "socketID"
redis 127.0.0.1:6379>
Все еще не повезло получить их с приведенным выше кодом.
РЕДАКТИРОВАТЬ - РЕШЕНО
У меня были проблемы с тем, как я НАСТРОЙКИ И ПОЛУЧЕНИЯ данных. Я не устанавливал «пользовательский хеш» на правой клавише для «набора пользователей». Вот правильная версия:
var user = userID;
// add first user
redis.sadd("users", user);
redis.hmset("users:"+user, "socketID", socket.id, "userID", userID);
Однако мне также нужно было реализовать изменение Филиппа Т при ПОЛУЧЕНИИ хэша пользователя.
for (var onlineUser in onlineUsers)
не дает мне объект дляonlineUser
- person OdieO   schedule 08.07.2014