当前位置: 首页 > 知识库问答 >
问题:

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

袁运良
2023-03-14
// 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);

这是我从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"}"

共有1个答案

轩辕涵亮
2023-03-14

好的,所以我在自己身上测试,这不起作用,因为我设置的值被会话中间件覆盖了。

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

希望这能帮到别人。

 类似资料:
  • 我正在尝试使用mysqli函数将一些数据插入到表中。 我的连接使用以下功能可以正常工作: 但当我尝试运行insert函数时,数据库中什么也得不到。 我一直在查看mysqli函数列表,寻找正确的错误方法,但它们似乎都与DB的连接有关,而不是与插入成功有关(而且我可以在我的DB中清楚地看到它没有插入。) 最好的调试方法是什么?我应该对插入使用哪种错误处理? 我尝试使用mysqli_sqlstate,它

  • 查找所有数据库大小的命令是什么? 我可以使用以下命令找到特定数据库的大小:

  • 从一个方法call AndUpdateInB(),假设我正在调用B类(@Component)的date()方法,其中我正在调用myRepository.save()方法来更新db中的一些数据,并且在相同的功能中我正在执行一些其他调用...然后将响应返回给类A。 所以问题是,当类B方法update()将响应返回给类A方法callAndUpdateInB()时,数据在数据库中得到更新。但当我调用myR

  • 我在尝试创建一个以gradle数据库为中心的项目来管理我的所有db迁移时遇到了这个问题。我正在利用插件的1.2.1并且相信我已经正确地配置了所有的东西,但是,我的变更集没有应用,即使在databasechangelog中没有行,并且更新状态报告如下所示的成功(来自gradle update--调试的输出)。 21:55:27.248[错误][System.err]信息2/26/16 9:55 PM

  • 本文向大家介绍修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库,包括了修改SQL-SERVER数据库表结构的SQL命令附sql命令行修改数据库的使用技巧和注意事项,需要的朋友参考一下 具体不废话了,请看下文代码详细说明吧。 向表中增加一个 varchar 列:   ALTER TABLE distributors ADD COLUMN address varchar(30)

  • 本文向大家介绍MySQL 数据库 ALTER命令讲解,包括了MySQL 数据库 ALTER命令讲解的使用技巧和注意事项,需要的朋友参考一下 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成。 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQ