我使用的是connect-redis-crypto模块(https://github.com/jas-/connect-redis-crypto ),它是为在connect-redis(https://github.com/tj/connect-redis)之上加密redis会话数据而构建的。我的redis版本是3.2.8。
我遇到了error node-redis: Deprecated: The SET command contains a argument of type Object。根据更大的错误消息,它似乎来自于试图在字符串[object Object]不是JSON字符串时对其进行解析。我将包含用户信息的嵌套对象放在req.session上,该对象直接存储在redis中(最好是加密的)。
从一些来源我了解到Redis中的嵌套对象是不允许的,这可能会导致这个错误,但我相信这个库将数据存储为JSON以允许嵌套对象。JSON对我来说工作得很好,但是当这个connect-redis-crypto库尝试使用connect-redis解析加密数据时,它会抛出这个特定的错误。
会非常感谢你的帮助!
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)
发布于 2019-08-03 07:28:58
您必须将对象包装在JSON.stringify中,然后记住在稍后查询键时对响应执行JSON.parse操作。
// set
client.set(
"key",
JSON.stringify(
{
example: {
field: "testing",
field1: 333
},
field: 123
}, () => {}
)
);
// get
client.get("key", (err, data) => {
console.log(JSON.parse(data));
});发布于 2017-05-16 02:25:02
https://stackoverflow.com/questions/43858414
复制相似问题