gpt4 book ai didi

javascript - Redis set命令成功但数据库未更改

转载 作者:行者123 更新时间:2023-12-02 19:10:08 25 4
gpt4 key购买 nike

这让我发疯。我通过更改 Redis 中的 session 存储来停用用户。首先,我找到 key ,更改值,然后设置新值。回复均表明命令成功,但 redis-cli 显示该 key 没有更改。

// Update the Redis session

var client = redis.createClient();

var keys = await new Promise(function(resolve, reject) {
client.keys('*', function(err, reply) {
if(err) reject(err);
resolve(reply);
});
});

var data = await new Promise(function(resolve, reject) {

keys.forEach(function(key) {

resolve(new Promise(function(resolve, reject) {
client.get(key, function(err, reply) {
if(err) reject(err);

var session = JSON.parse(reply);
if(session.userId == userId) {
session.authenticated = false;
return resolve({key: key, value: JSON.stringify(session)});
}
});
}));


});

});

var reply = await new Promise(function(resolve, reject) {

client.set(data.key, data.value, function(err, reply) {
if (err) reject(err);
resolve(reply);
});

});
console.log(keys);
console.log(data);
console.log(reply);

即使我将该 key 的已验证属性设置为 false,它仍然在 redis-cli 中显示为 true。控制台的日志和回复显示该命令已成功,但事实并非如此。有什么想法吗?

这是我从 redis-cli 返回的内容

127.0.0.1:6379> get sess:_xArN7ShiZRjyxbv_5xuh0FhTU6orlX5
"{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"loginFailed\":false,\"authenticated\":true,\"userId\":1"}"

最佳答案

好吧,我自己测试了这个,但这不起作用,因为我设置的值被 session 中间件覆盖。

此外,promise 是并行执行的,而不是顺序执行的,因此嵌套回调在这种情况下更有意义,并解决了这部分问题。

希望这对其他人有帮助。

关于javascript - Redis set命令成功但数据库未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com