Node-redis: Kesalahan dengan node-redis: Deprecated: Perintah SET berisi argumen bertipe Object

Dibuat pada 9 Mei 2017  ·  3Komentar  ·  Sumber: NodeRedis/node-redis

Juga diposting di Stack Overflow: http://stackoverflow.com/questions/43858414/error-with-node-redis-deprecated-the-set-command-contains-a-argument-of-type-o

Saya menggunakan modul connect-redis-crypto (https://github.com/jas-/connect-redis-crypto) yang dibuat untuk mengenkripsi data sesi redis di atas connect-redis (https: // github. com / tj / hubungkan-redis). Versi redis saya adalah 3.2.8.

Saya mengalami kesalahan node-redis: Deprecated: Perintah SET berisi argumen bertipe Object. Berdasarkan pesan kesalahan yang lebih besar, tampaknya itu berasal dari mencoba mengurai string [Objek Objek] ketika itu bukan string JSON. Saya meletakkan objek bersarang yang menyimpan informasi pengguna di req.session yang secara langsung disimpan (dan idealnya dienkripsi) di redis.

Dari beberapa sumber saya belajar objek bersarang di Redis tidak diperbolehkan yang mungkin menyebabkan kesalahan ini, tapi saya yakin perpustakaan ini menyimpan data sebagai JSON untuk memungkinkan objek bersarang. connect-redis berfungsi dengan baik untuk saya, tetapi ketika pustaka connect-redis-crypto ini mencoba untuk mengurai data terenkripsi JSON, saya mendapat kesalahan khusus ini.

Akan sangat menghargai bantuan Anda!

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

Komentar yang paling membantu

node_redis tidak merangkai objek jika disediakan. Alasannya adalah, tidak tahu kapan harus mengurai string dan kapan tidak.

Oleh karena itu, Anda benar-benar menghemat [object Object] di Redis, seperti yang ditunjukkan peringatan. Dan Anda mengalami kesalahan parse karena [object Object] bukan JSON yang valid. Jadi tolong rangkai objek Anda sebelum meneruskannya ke node_redis.

Semua 3 komentar

node_redis tidak merangkai objek jika disediakan. Alasannya adalah, tidak tahu kapan harus mengurai string dan kapan tidak.

Oleh karena itu, Anda benar-benar menghemat [object Object] di Redis, seperti yang ditunjukkan peringatan. Dan Anda mengalami kesalahan parse karena [object Object] bukan JSON yang valid. Jadi tolong rangkai objek Anda sebelum meneruskannya ke node_redis.

Gunakan: client.set ('key', JSON.stringify ({contoh: {field: 'testing', field1: 333}, field: 123}, () => {});
client.get ('key', (err, data) => {
console.log (JSON.parse (data);
});

apakah mungkin ada panggilan balik untuk peringatan ini? selalu sulit untuk menemukan penyebab peringatan tesis ini pada proyek-proyek besar.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat