NodeJS& Redis null响应

时间:2018-03-19 02:53:36

标签: node.js redis

我正在研究一个在它创建的Redis数据库上运行良好的NodeJS应用程序。

同一个应用程序的旧版本使用的数据库信息稍少一些。

我的目标是通过对可能无效的查询引入错误处理,将我的新应用程序与旧数据库一起使用。

当我将我的开发应用程序切换到旧数据库的副本时,我收到以下错误:

/root/z-nomp/node_modules/redis/lib/utils.js:7
    if (reply.length === 0 || !(reply instanceof Array)) {
              ^

TypeError: Cannot read property 'length' of undefined
    at Object.replyToObject [as reply_to_object] (/root/z-nomp/node_modules/redis/lib/utils.js:7:15)
    at RedisClient.handle_reply (/root/z-nomp/node_modules/redis/index.js:314:23)
    at multi_callback (/root/z-nomp/node_modules/redis/lib/multi.js:79:43)
    at Command.callback (/root/z-nomp/node_modules/redis/lib/multi.js:116:9)
    at normal_reply (/root/z-nomp/node_modules/redis/index.js:721:21)
    at RedisClient.return_reply (/root/z-nomp/node_modules/redis/index.js:819:9)
    at JavascriptRedisParser.returnReply (/root/z-nomp/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/root/z-nomp/node_modules/redis-parser/lib/parser.js:574:12)
    at Socket.<anonymous> (/root/z-nomp/node_modules/redis/index.js:274:27)
    at Socket.emit (events.js:160:13)
    at addChunk (_stream_readable.js:269:12)
    at readableAddChunk (_stream_readable.js:256:11)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onread (net.js:602:20)

发生此错误的库位于:https://github.com/NodeRedis/node_redis/blob/master/lib/utils.js

我是否需要在此模块中引入错误处理?

原始应用的代码是值得的:https://github.com/zone117x/node-open-mining-portal

我要求的代码在这里:https://github.com/z-classic/z-nomp

我应该注意这类情况是否存在一些常见的陷阱?

谢谢!

1 个答案:

答案 0 :(得分:0)

这不是调试答案。正如评论中所述,我们需要代码才能进行评估。

但是根据您收到的错误,很明显“回复”#39;返回为undefined或null。我会假设你知道的那么多。

首先,您的代码必须检查这样的事情。你正在直接跳到长度(实际上,对于理解未定义,公牛,空字符串和对象之间差异的人来说,检查原因是非常糟糕的。)但是你似乎没有检查回复,它返回undefined。

关于你的整体节点 - redis婚姻,这很常见。在许多情况下通常都是一个非常好的主意。但是当你使用Redis时要小心监视你的吞吐量,如果像Socket.io这样的库一起使用,你将面临一系列需要克服的新问题。

以上所有内容只是我在火车上的快速浏览。因此,请原谅拼写错误和缺乏正确使用大胆评论等。

你真的需要评估你的变量,尤其是当你不知道他们是否会拥有任何东西时。在这种情况下,承诺回调等待所有人都是你的朋友。