Stack Overflowにも投稿されています: http :
connect-redis(https:// github)の上にredisセッションデータを暗号化するために構築されたconnect-redis-cryptoモジュール(https://github.com/jas-/connect-redis-crypto)を使用しています。 com / tj / connect-redis)。 私のredisバージョンは3.2.8です。
エラーnode-redisが発生しています:非推奨:SETコマンドにObject型の引数が含まれています。 より大きなエラーメッセージに基づくと、JSON文字列ではないときに文字列[objectObject]を解析しようとしたことが原因のようです。 ユーザー情報を保持するネストされたオブジェクトを、redisに直接保存される(理想的には暗号化される)req.sessionに配置します。
一部のソースから、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)
node_redisは、オブジェクトが提供されている場合、オブジェクトを文字列化しません。 その理由は、文字列を解析するタイミングと解析しないタイミングがわからないためです。
したがって、警告が示すように、実際にはRedisに[object Object]
を保存しました。 また、 [object Object]
は有効なJSONではないため、解析エラーが発生します。 したがって、node_redisに渡す前に、オブジェクトを文字列化してください。
使用:client.set( 'key'、JSON.stringify({example:{field: 'testing'、field1:333}、field:123}、()=> {});
client.get( 'key'、(err、data)=> {
console.log(JSON.parse(data);
});
この警告に対してコールバックを行うことは可能ですか? 大規模なプロジェクトでこれらの警告の原因を見つけるのは常に注意が必要です。
最も参考になるコメント
node_redisは、オブジェクトが提供されている場合、オブジェクトを文字列化しません。 その理由は、文字列を解析するタイミングと解析しないタイミングがわからないためです。
したがって、警告が示すように、実際にはRedisに
[object Object]
を保存しました。 また、[object Object]
は有効なJSONではないため、解析エラーが発生します。 したがって、node_redisに渡す前に、オブジェクトを文字列化してください。