تم نشره أيضًا على Stack Overflow: http://stackoverflow.com/questions/43858414/error-with-node-redis-deprecated-the-set-command-contains-a-argument-of-type-o
أنا أستخدم الوحدة النمطية connect-redis-crypto (https://github.com/jas-/connect-redis-crypto) المصممة لتشفير بيانات جلسة redis أعلى connect-redis (https: // github. com / tj / connect-redis). إصدار redis الخاص بي هو 3.2.8.
أنا أواجه خطأ node-redis: مهمل: يحتوي الأمر SET على وسيطة من النوع Object. استنادًا إلى رسالة الخطأ الأكبر ، يبدو أنها تأتي من محاولة تحليل السلسلة [كائن الكائن] عندما لا تكون سلسلة JSON. أضع كائنات متداخلة تحتوي على معلومات المستخدم في جلسة الطلب التي يتم تخزينها مباشرة (وتشفيرها بشكل مثالي) في 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)
لا يقوم node_redis بتشديد كائن في حالة توفيره. والسبب هو أنه لن يعرف متى يحلل السلسلة ومتى لا يفعل.
لذلك قمت بالفعل بحفظ [object Object]
في Redis ، تمامًا كما يشير التحذير. وواجهت خطأ التحليل لأن [object Object]
ليس JSON صالحًا. لذا يرجى تشديد الكائن الخاص بك قبل تمريره إلى node_redis.
استخدم: client.set ('key'، JSON.stringify ({مثال: {field: 'testing'، field1: 333}، field: 123}، () => {})؛
client.get ('key'، (err، data) => {
console.log (JSON.parse (بيانات) ؛
}) ؛
هل من الممكن أن يكون هناك رد على هذا التحذير؟ من الصعب دائمًا العثور على سبب تحذيرات الأطروحات في المشاريع الكبيرة.
التعليق الأكثر فائدة
لا يقوم node_redis بتشديد كائن في حالة توفيره. والسبب هو أنه لن يعرف متى يحلل السلسلة ومتى لا يفعل.
لذلك قمت بالفعل بحفظ
[object Object]
في Redis ، تمامًا كما يشير التحذير. وواجهت خطأ التحليل لأن[object Object]
ليس JSON صالحًا. لذا يرجى تشديد الكائن الخاص بك قبل تمريره إلى node_redis.