Ajax 具有节点的Redis smembers
我有一个Ajax 具有节点的Redis smembers,ajax,node.js,redis,Ajax,Node.js,Redis,我有一个节点、Express和WebSocket聊天应用程序。当前聊天室中用户的用户名存储到Redis。当我在SMEMBERS'onlineUsers'中键入时,我会从redis cli中获得当前房间中所有用户的列表: 127.0.0.1:6379> smembers 'onlineUsers' 1) "jackson" 2) "bubba yump" 3) "dog" 4) "rumba" 5) "buba" 在我的主应用程序javascript文件中,我有一个获取当前用户的
节点、Express和WebSocket
聊天应用程序。当前聊天室中用户的用户名存储到Redis
。当我在SMEMBERS'onlineUsers'
中键入时,我会从redis cli
中获得当前房间中所有用户的列表:
127.0.0.1:6379> smembers 'onlineUsers'
1) "jackson"
2) "bubba yump"
3) "dog"
4) "rumba"
5) "buba"
在我的主应用程序javascript
文件中,我有一个获取当前用户的方法,以便在页面上显示他们:
var showCurrentUsers = function(){
$('#list_of_users').empty();
$.getJSON('getUsers', function(data){
console.log(data)
for (var i in data){
$('#list_of_users').append("<li> User: "+data[i]+"</li>")
}
});
}
以下是用户名最初发布到数据库的位置:
client.on("setUsername", function(user){
pub.publish("chatting","A new user in connected:" + user);
db.sadd("onlineUsers",user);
}
);
我知道用户名正确地发布到数据库中,我可以从redis cli访问它们,但我不确定为什么我的JSON调用返回的是true
,而不是列表。(我假设您正在使用)
节点redis客户端是异步的。您可以将其视为写入和删除的同步,但要从db读取,需要使用回调
app.get('/getUsers', function(req, res, next){
getOnlineUsers(function (err, onlineUsers) {
if (err) {
return next(err);
}
res.send(onlineUsers);
});
});
// REDIS DATA
var getOnlineUsers = function(cb){
return db.smembers("onlineUsers", cb);
}
请注意,db.sadd(“onlineUsers”,用户)如果需要确认写入成功,可以使用回调写入code>,例如db.sadd(“onlineUsers”,user,function(err){if(err){handle(err);})代码>
app.get('/getUsers', function(req, res, next){
getOnlineUsers(function (err, onlineUsers) {
if (err) {
return next(err);
}
res.send(onlineUsers);
});
});
// REDIS DATA
var getOnlineUsers = function(cb){
return db.smembers("onlineUsers", cb);
}