2017-07-06 18 views
0

我想在同一個網頁上列出兩組不同的消息,但我一直沒有這樣做。有沒有可能在Lrange中使用多個鍵?

如果我只想列出如下所示的一組消息,很容易。

router.get("/index", function(req, res) { 
    redisClient.lrange('chat:messages', 0, -1, function(err, messages) { 
    if (err) { 
     console.log(err); 
    } else { 
     var message_list = []; 
     messages.forEach(function(message, i) { 
     message_list.push(message); 
     }); 
     res.render("index", { messages: message_list }); 
    } 
    }); 
}); 

但是,我想列出兩組消息,所以我真正想要做的就像下面這樣。

router.get("/index", function(req, res) { 
    redisClient.lrange(['chat:messages1', 'chat:messages2'], 0, -1, function(err, messages) { 
    if (err) { 
     console.log(err); 
    } else { 
     var message_list1 = []; 
     var message_list2 = []; 
     messages[0].forEach(function(message, i) { 
     message_list1.push(message); 
     }); 
     messages[1].forEach(function(message, i) { 
     message_list2.push(message); 
     }); 
     res.render("index", { messages1: message_list1, messages2: message_list2 }); 
    } 
    }); 
}); 

此代碼不起作用,但我希望我能夠告訴您我想做什麼。

是否可以在同一頁面上列出兩組消息?

如果是這樣,我該如何調整我的代碼才能使其工作?

回答

1

lrange命令只需要一個鍵加索引。使用多塊重寫邏輯是否合理:

redisClient.multi() 
    .lrange('chat:messages1', 0, -1) 
    .lrange('chat:messages2', 0, -1) 
    .exec(function (err, replies) { 
     replies.forEach(function (reply, index) { 
      // do your computation 
    }); 
+1

是的,這正是我所需要的。非常感謝! – tet

相關問題