表示没有find它期望的redis结果
我跟着一个快速演示,你用redis存储值,然后检索它们。 当我尝试将代码适配到我设置的快速应用程序时,我无法获得预期的结果。
主要是,当我尝试获取req.online
的长度,我得到一个错误,因为它有一个空值。
用下面的代码,我期望req.online.length
有一些价值,而不是总是null
,从而引发错误。
这个贴的代码工作( req.online.length
将等于2): http : req.online.length
此粘贴中的代码不起作用( req.online.length
为空,尝试检查长度时发生错误): http : req.online.length
当我通过redis cli检查使用:
ZREVRANGEBYSCORE online +inf -inf
我可以看到按预期存储的各种用户代理值。
我需要做什么才能从redis获得这个值并使用它?
问题与中间件设置的顺序有关。 app.use调用的顺序是相关的。 有关更多信息,请参阅以下问题:
Node.js / Express.js – app.router如何工作?
如果您对执行顺序有疑问,可以在代码中的各个位置添加一些console.log跟踪以了解stream程。
在这里,您可以在设置自己的中间件函数以从Redis获取数据之前调用app.use(app.router)。 所以node.js在有机会调用中间件函数之前路由请求。 结果是zrevrangebyscore从来没有被调用,并且req.inline没有设置,当get查询被处理时。
如果您在调用app.use(app.router)之前定义并app.use中间件函数,它将工作。