Redis客户端和节点js - hgetall方法失败,结果为空
redis client and node js - hgetall method fails with empty results
这是我使用redis cilent和node js的第一天。
我试图复制我在node.js中通过redis-cli运行的命令:
127.0.0.1:6379> HGETALL widgets:9145090003_00:00_00:00
1) "id"
2) "33305"
3) "loc"
4) "jamaica"
5) "days"
6) ""
nodejs代码:
client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) {
console.log(err);
replies.forEach(function (reply,i) {
console.log(' ' + i + ':' + reply);
});
});
它返回null,然后在尝试执行foreach时失败。
i also tried:
client.hgetall("widgets", function (err, replies) {
console.log(err);
replies.forEach(function (reply,i) {
console.log(' ' + i + ':' + reply);
});
});
但是我得到了相同的结果。
不知道我做错了什么。
编辑1
我试过这个代码:
17 console.log("attempting to do hgetall..");
18 client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) {
19 //for (let k in replies) console.log(' ${k}:${replies[k]}');
20 console.log(replies.id);
21 });
结果如下:
/var/www/html/node/test/models/Widgets.js:20
console.log(replies.id);
^
TypeError: Cannot read property 'id' of null
然而,在CLI中,我可以这样做:
127.0.0.1:6379> HGET widgets:9145090003_00:00_00:00 id
"33305"
127.0.0.1:6379> HGETALL widgets:9145090003_00:00_00:00
1) "id"
2) "33305"
3) "loc"
4) "jamaica"
5) "days"
6) ""
127.0.0.1:6379>
hgetall的回复是Object类型,尝试在代码中添加以下行
console.log(replies.id);
,您将在控制台中打印33305。
我试着复制你正在做的事情。我会首先检查你是否连接到正确的redis实例。如果是,问题是forEach函数适用于数组,但这里的回复是一个对象,没有object .prototype.forEach函数。你必须以不同的方式循环响应。我已经重写了你的代码的方式,应该工作,如果你连接到正确的redis实例。
client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) {
console.log(replies);
for(let k in replies) {
console.log(` ${k}:${replies[k]}`);
}
});
对于使用async/await
的开发人员:不要忘记在方法从Redis返回值之前添加await
,否则你会得到一个空数组/集。
的例子:
await this.client.zRange('test_queue', '0', '100')
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- JsFiddle在分叉后描述失败
- 承诺,如果第一个失败,则返回第二个承诺结果
- 无需重新加载即可播放MySQL结果.AJAX 正在失败
- 咖啡脚本化的 ajax 调用结果在实际成功时失败回调
- Ajax 注册失败不会回显结果
- AngularJS中将筛选器结果绑定到输入失败
- 返回表单提交的结果从 PHP 到 JavaScript,区分成功和失败
- Javascript布尔结果失败
- Node js async.映射尝试失败,结果为空
- Redis客户端和节点js - hgetall方法失败,结果为空
- 在失败之前轮询结果n次(尝试之间有延迟)
- 404而将JS变量推到PHP,调用PHP函数,将结果作为JSON字符串传递给JS,并可能在使用它时失败
- 需要想法显示登录失败的结果在同一网页