Node-redis: Ошибка с node-redis: устарело: команда SET содержит аргумент типа Object

Созданный на 9 мая 2017  ·  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. Судя по более крупному сообщению об ошибке, похоже, что это происходит из-за попытки проанализировать строку [object Object], когда она не является строкой JSON. Я помещаю вложенные объекты, которые содержат информацию о пользователе, в req.session, которая напрямую сохраняется (и в идеале зашифровывается) в 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 ('ключ', JSON.stringify ({пример: {поле: 'тестирование', поле1: 333}, поле: 123}, () => {});
client.get ('key', (err, data) => {
console.log (JSON.parse (данные);
});

можно ли получить обратный вызов по этому предупреждению? На больших проектах всегда сложно найти причину этого предупреждения.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

juriansluiman picture juriansluiman  ·  3Комментарии

betimer picture betimer  ·  5Комментарии

Stono picture Stono  ·  6Комментарии

adamgajzlerowicz picture adamgajzlerowicz  ·  4Комментарии

yuany picture yuany  ·  4Комментарии