node-redis 错误:已弃用:SET 命令包含对象类型的参数

Coo*_*ies 5 encryption json redis node.js

我正在使用connect-redis-crypto模块(https://github.com/jas-/connect-redis-crypto ),该模块用于在connect-redishttps://github.com/tj/connect-redis)之上加密 redis 会话数据. 我的 redis 版本是3.2.8.

我遇到了错误node-redis: Deprecated: The SET command contains a argument of type Object。根据较大的错误消息,它似乎来自尝试解析[object Object]不是 JSON 字符串的字符串。我将保存用户信息的嵌套对象req.session直接存储在 redis 中(理想情况下是加密的)。

我从某些来源了解到 Redis 中的嵌套对象是不允许的,这可能会导致此错误,但我相信该库将数据存储为 JSON 以允许嵌套对象。connect-redis对我来说很好用,但是当这个connect-redis-crypto库尝试 JSON 解析加密数据时,它会抛出这个特定的错误。

非常感谢您的帮助!

node_redis: Deprecated: The SET command contains a argument of type Object.
This is converted to "[object Object]" by using .toString() now and will return an error from v.3.0 on.
Please handle this in your code to make sure everything works as you intended it to.
8 May 18:24:48 - ---NEW REQUEST---
REQUEST : GET /api/somePath/client
QUERY   : {}
BODY    : {}
data [object Object]
err SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at Command.callback (/Users/Documents/web-AOT/server/node_modules/connect-redis-crypto/lib/connect-redis.js:262:35)
    at normal_reply (/Users/Documents/web-AOT/server/node_modules/redis/index.js:721:21)
    at RedisClient.return_reply (/Users/Documents/web-AOT/server/node_modules/redis/index.js:819:9)
    at JavascriptRedisParser.returnReply (/Users/Documents/web-AOT/server/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/Users/Documents/web-AOT/server/node_modules/redis-parser/lib/parser.js:560:12)
    at Socket.<anonymous> (/Users/Documents/web-AOT/server/node_modules/redis/index.js:274:27)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:189:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:551:20)
Run Code Online (Sandbox Code Playgroud)

Coo*_*ies 0

实际上,我可以通过分叉库进行调整来修复错误。:)

如果有人遇到这个错误......

https://github.com/rjlee7/connect-redis-crypto