我正在尝试使用Redis存储并为我的切换功能获取布尔值。
我正在使用的依赖性是redis-js
,我可以使用键redis来设置值false
,但是从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
。
答案 0 :(得分:2)
要使您的装备正常工作,必须明确检查所获得的值是否等于字符串'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 :(得分:1)
您运行命令redis.get,返回值类型为String而不是Boolean。
所以您不应该使用!运算符,您可以将其与“ true”或“ false”进行比较,然后分配一个值