Хранение и получение логического с Redis - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь использовать Redis для хранения и получения логического значения для моей функции переключения.

Зависимость, которую я использую: redis-js Я могу установить значение false с ключом для redis, но получение значения из redis всегда false.

Скажем, сначала сохраните значение ключа в Redis

redis.set('myKey', 'false');

Получить значение

let toggle = redis.get('myKey');
toggle = !toggle;

Магазин

redis.set('myKey', toggle);

Получить

const checkStatus = redis.get('myKey');
return checkStatus;

Я ожидаю, что результат будет true -> false, если функция будет выполнена два раза.

Ответы [ 2 ]

2 голосов
/ 04 мая 2019

Чтобы ваш тогл работал, вы должны явно проверить, равно ли полученное значение строке 'false'.

let toggle = redis.get('myKey');
toggle = toogle === 'false'

Преобразование строки 'false' в логические результаты в true не false и отрицая его, вы получаете false.

Из MDN

Все остальные значения, включая любой объект или строку "false",создать объект с начальным значением true

Вот иллюстрация:

const val = 'false'

const toggle = !val; // this is equivalent to !Boolean(val)

const bool = Boolean(val) // get boolean
const negated = !bool // negate
console.log('toggle: ', toggle);
console.log('bool: ', bool); // Boolean("false") gives true
console.log('negated: ', negated);
1 голос
/ 06 мая 2019

Вы запускаете команду redis.get, тип возвращаемого значения - String not Boolean.

Так что вы не должны использовать!оператор, вы можете сравнить с «истиной» или «ложью», а затем присвоить значение

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