Redis Использование HSET для хранения объекта - PullRequest
0 голосов
/ 13 февраля 2020

Я использовал HMSET для хранения объекта после его выравнивания с помощью плоского модуля npm. Так что-то вроде этого:

let bio = {
    name: {
        first: 'John',
        last: 'Doe'
    },
    goal: {
        desc: 'TO BE THE VERY BEST, LIKE NO ONE EVER WAS!',
        test: 'TO CATCH THEM IS MY REAL TEST -- ',
        cause: 'TO TRAIN THEM IS MY CAUUUUUSE!'
    },
    hobbies: [ 'making coffee', 'making low carb recipes', 'soccer' ],
    'education.college': {
        name: 'Baruch'
    },
    'hobbiesAsObject[]': {
        '0': 'making coffee',
        '1': 'making low carb recipes',
        sport: 'Baseball'
    },
    age: 44
};

let flatBio = flat(bio);
let hmSetAsyncBio = await client.hmsetAsync('bio', flatBio);

Но я читал, что HMSET считается устаревшим, когда я пытаюсь использовать HSET таким же образом, он не работает. Я знаю, что могу просто JSON .stringfy это и сохранить это, используя обычный SET, но я хотел бы иметь возможность увеличивать поля в моем объекте. Вот как я это делал ранее:

const incrAge = await client.hincrbyAsync('bio', 'age', 1);

Итак, мой вопрос, как я могу сделать это с помощью HSET? Я продолжаю пробовать разные вещи, но, похоже, это не работает. Некоторые примеры, которые я видел, показывают циклическое прохождение объекта (это один пример, который я видел https://thisdavej.com/guides/redis-node/node/hashes.html) и использование HSET для каждого элемента, но у меня есть вложенные объекты, и кажется, что теперь это больше PITA, чем это было раньше. Должен быть более простой способ сделать это?

Версия сервера Redis: 5.0.7 Версия узла: 12.14.0 версия node-redis (npm module): версия 0.1.7 redis (npm) module) версия: 3.0.2

Ошибка при замене

let hmSetAsyncBio = await client.hmsetAsync('bio', flatBio);

на

let hmSetAsyncBio = await client.hsetAsync('bio', flatBio);

Ошибка: node_redis: команда HSET содержит недопустимый тип аргумента. Принимаются только строки, даты и буферы. Пожалуйста, обновите ваш код, чтобы использовать допустимые типы аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...