Node-redis: Fehler bei Node-Redis: Veraltet: Der Befehl SET enthält ein Argument vom Typ Object

Erstellt am 9. Mai 2017  ·  3Kommentare  ·  Quelle: NodeRedis/node-redis

Ebenfalls auf Stack Overflow veröffentlicht: http://stackoverflow.com/questions/43858414/error-with-node-redis-deprecated-the-set-command-contains-a-argument-of-type-o

Ich verwende das Connect-Redis-Crypto-Modul (https://github.com/jas-/connect-redis-crypto), das zum Verschlüsseln von Redis-Sitzungsdaten über Connect-Redis (https: // github) erstellt wurde. com / tj / connect-redis). Meine Redis-Version ist 3.2.8.

Ich stoße auf den Fehler node-redis: Veraltet: Der Befehl SET enthält ein Argument vom Typ Object. Basierend auf der größeren Fehlermeldung scheint dies auf den Versuch zurückzuführen zu sein, die Zeichenfolge [Objektobjekt] zu analysieren, wenn es sich nicht um eine JSON-Zeichenfolge handelt. Ich habe verschachtelte Objekte, die Benutzerinformationen enthalten, in req.session abgelegt, die direkt in redis gespeichert (und idealerweise verschlüsselt) werden.

Aus einigen Quellen habe ich erfahren, dass verschachtelte Objekte in Redis nicht zulässig sind, was diesen Fehler verursachen könnte. Ich glaube jedoch, dass diese Bibliothek Daten als JSON speichert, um verschachtelte Objekte zuzulassen. connect-redis funktioniert gut für mich, aber wenn diese connect-redis-crypto-Bibliothek versucht, verschlüsselte Daten durch JSON zu analysieren, wird mir dieser spezielle Fehler angezeigt.

Würde mich sehr über Ihre Hilfe freuen!

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

Hilfreichster Kommentar

node_redis stringifiziert kein Objekt, falls dies bereitgestellt wird. Der Grund ist, dass es nicht wissen würde, wann der String analysiert werden soll und wann nicht.

Daher haben Sie in Redis tatsächlich [object Object] gespeichert, wie in der Warnung angegeben. Und Sie stoßen auf den Analysefehler, weil [object Object] kein gültiger JSON ist. Bitte stringifizieren Sie Ihr Objekt, bevor Sie es an node_redis übergeben.

Alle 3 Kommentare

node_redis stringifiziert kein Objekt, falls dies bereitgestellt wird. Der Grund ist, dass es nicht wissen würde, wann der String analysiert werden soll und wann nicht.

Daher haben Sie in Redis tatsächlich [object Object] gespeichert, wie in der Warnung angegeben. Und Sie stoßen auf den Analysefehler, weil [object Object] kein gültiger JSON ist. Bitte stringifizieren Sie Ihr Objekt, bevor Sie es an node_redis übergeben.

Verwenden Sie: client.set ('key', JSON.stringify ({Beispiel: {Feld: 'Testen', Feld1: 333}, Feld: 123}, () => {});
client.get ('key', (err, data) => {
console.log (JSON.parse (Daten);
});

Ist es möglich, einen Rückruf für diese Warnung zu erhalten? Bei großen Projekten ist es immer schwierig, die Ursache für diese Warnung zu finden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen