Node-redis: Error con node-redis: obsoleto: el comando SET contiene un argumento de tipo Object

Creado en 9 may. 2017  ·  3Comentarios  ·  Fuente: NodeRedis/node-redis

También publicado en Stack Overflow: http://stackoverflow.com/questions/43858414/error-with-node-redis-deprecated-the-set-command-contains-a-argument-of-type-o

Estoy usando el módulo connect-redis-crypto (https://github.com/jas-/connect-redis-crypto) que está construido para cifrar los datos de la sesión de redis en la parte superior de connect-redis (https: // github. com / tj / connect-redis). Mi versión de redis es 3.2.8.

Me encuentro con el error node-redis: En desuso: el comando SET contiene un argumento de tipo Object. Basado en el mensaje de error más grande, parece provenir de intentar analizar la cadena [objeto Objeto] cuando no es una cadena JSON. Puse objetos anidados que contienen información del usuario en req.session que se almacena directamente (e idealmente se cifra) en redis.

De algunas fuentes aprendí que los objetos anidados en Redis no están permitidos, lo que podría causar este error, pero creo que esta biblioteca almacena datos como JSON para permitir objetos anidados. connect-redis funciona bien para mí, pero cuando esta biblioteca connect-redis-crypto intenta analizar datos cifrados con JSON, me arroja este error en particular.

¡Realmente agradecería su ayuda!

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

Comentario más útil

node_redis no clasifica un objeto en caso de que se proporcione. La razón es que no sabría cuándo analizar la cadena y cuándo no.

Por lo tanto, realmente guardó [object Object] en Redis, tal como indica la advertencia. Y se encuentra con el error de análisis porque [object Object] no es JSON válido. Así que, por favor, especifique su objeto antes de pasarlo a node_redis.

Todos 3 comentarios

node_redis no clasifica un objeto en caso de que se proporcione. La razón es que no sabría cuándo analizar la cadena y cuándo no.

Por lo tanto, realmente guardó [object Object] en Redis, tal como indica la advertencia. Y se encuentra con el error de análisis porque [object Object] no es JSON válido. Así que, por favor, especifique su objeto antes de pasarlo a node_redis.

Use: client.set ('clave', JSON.stringify ({ejemplo: {campo: 'prueba', campo1: 333}, campo: 123}, () => {});
client.get ('clave', (err, datos) => {
console.log (JSON.parse (datos);
});

¿Es posible tener una devolución de llamada en esta advertencia? Siempre es complicado encontrar la causa de estas advertencias en proyectos grandes.

¿Fue útil esta página
0 / 5 - 0 calificaciones