【发布时间】:2011-08-06 19:18:52
【问题描述】:
我正在使用 redis + nowjs。 我想知道如何处理来自 hgetall() 的结果? 当我尝试在客户端显示“结果”时,我只得到 [object Object](它可能是来自服务器端 js 的字符串)。
//Redis结果是
redis> HSET cards:lightning-bolt name "Lightning Bolt"
(integer) 1
redis> HSET cards:lightning-bolt text "Blah blah blah"
(integer) 1
redis> HGETALL cards:lightning-bolt
1) "name"
2) "Lightning Bolt"
3) "text"
4) "Blah blah blah"
redis>
//在我的服务器js中
everyone.now.signalShowRedisCard = function(card_id) {
var self = this;
client.hgetall(("cards:%s" % card_id), function (err, res) {
nowjs.getGroup(self.now.room).now.receiveShowRedisCard(res);
});
}
//在我的客户端js中(alert只输出[object Object])
now.receiveShowRedisCard = function(card_data) {
alert("redis card: "+card_data);
try {
console.log('card data: '+ card_data);
} catch(e) {
console.log("Firebug not installed.");
}
}
有什么想法吗?任何答复表示赞赏。
【问题讨论】:
-
不要在
console.log中使用+,直接在对象上使用console.log或console.dir。 -
@Raynos 谢谢!我为“卡片数据”放置了加号:“ - 这样我就可以轻松地发现 Firebug 中的特定日志,因为控制台中还有其他代码行记录......当我使用时是否有任何我不知道的问题a + "plus"?我认为它会将对象转换为字符串?如果是这样,那么我可能应该使用 + 大声笑...再次感谢!
-
你在做字符串连接。这意味着您在对象上隐式调用
toString。基本上,控制台比toString方法更擅长记录数据。请改用console.log("card data: ");console.log(card_data);
标签: node.js redis nowjs-sockets