Node-redis: Erro com node-redis: Obsoleto: O comando SET contém um argumento do tipo Object

Criado em 9 mai. 2017  ·  3Comentários  ·  Fonte: NodeRedis/node-redis

Também postado no Stack Overflow: http://stackoverflow.com/questions/43858414/error-with-node-redis-deprecated-the-set-command-contains-a-argument-of-type-o

Estou usando o módulo connect-redis-crypto (https://github.com/jas-/connect-redis-crypto), que é criado para criptografar dados de sessão do redis na parte superior do connect-redis (https: // github. com / tj / connect-redis). Minha versão redis é 3.2.8.

Estou executando o erro node-redis: Obsoleto: O comando SET contém um argumento do tipo Object. Com base na mensagem de erro maior, parece vir da tentativa de analisar a string [objeto Object] quando não é uma string JSON. Coloquei objetos aninhados que contêm informações do usuário em req.session, que são armazenados diretamente (e de preferência criptografados) no redis.

De algumas fontes, aprendi que objetos aninhados no Redis não são permitidos, o que pode causar esse erro, mas acredito que esta biblioteca armazena dados como JSON para permitir objetos aninhados. connect-redis funciona bem para mim, mas quando esta biblioteca connect-redis-crypto tenta analisar dados criptografados em JSON, ele me lança este erro específico.

Eu realmente aprecio sua ajuda!

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

Comentários muito úteis

node_redis não stringifica um objeto caso tal seja fornecido. A razão é que ele não saberia quando analisar a string e quando não.

Portanto, você realmente salvou [object Object] no Redis, conforme indica o aviso. E você encontra o erro de análise porque [object Object] não é um JSON válido. Portanto, stringifique seu objeto antes de passá-lo para node_redis.

Todos 3 comentários

node_redis não stringifica um objeto caso tal seja fornecido. A razão é que ele não saberia quando analisar a string e quando não.

Portanto, você realmente salvou [object Object] no Redis, conforme indica o aviso. E você encontra o erro de análise porque [object Object] não é um JSON válido. Portanto, stringifique seu objeto antes de passá-lo para node_redis.

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

é possível ter um retorno de chamada neste aviso? é sempre complicado encontrar a causa desses avisos em grandes projetos.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Alchemystic picture Alchemystic  ·  6Comentários

abhaygarg picture abhaygarg  ·  5Comentários

michaelwittig picture michaelwittig  ·  3Comentários

ghost picture ghost  ·  3Comentários

dotSlashLu picture dotSlashLu  ·  5Comentários