Node-redis: خطأ في node-redis: مهمل: يحتوي الأمر SET على وسيطة من النوع Object

تم إنشاؤها على ٩ مايو ٢٠١٧  ·  3تعليقات  ·  مصدر: NodeRedis/node-redis

تم نشره أيضًا على 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)

question

التعليق الأكثر فائدة

لا يقوم node_redis بتشديد كائن في حالة توفيره. والسبب هو أنه لن يعرف متى يحلل السلسلة ومتى لا يفعل.

لذلك قمت بالفعل بحفظ [object Object] في Redis ، تمامًا كما يشير التحذير. وواجهت خطأ التحليل لأن [object Object] ليس JSON صالحًا. لذا يرجى تشديد الكائن الخاص بك قبل تمريره إلى node_redis.

ال 3 كومينتر

لا يقوم 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 (بيانات) ؛
}) ؛

هل من الممكن أن يكون هناك رد على هذا التحذير؟ من الصعب دائمًا العثور على سبب تحذيرات الأطروحات في المشاريع الكبيرة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات