关于sessionData为null的问题

来源:7-15 完成server端登录的代码

慕莱坞0998854

2020-12-13

老师的代码如下:

  let needSetCookie = false;
  let userId = req.cookie.userid;
  if (!userId) {
    needSetCookie = true;
    userId = `${Date.now()}_${Math.random()}`;
    // 初始化redis 中的session值
    set(userId, {});
  }

  req.sessionId = userId;
  get(req.sessionId)
    .then((sessionData) => {
	  // 问题就是下面这句!!!!!!!!!!!!
      if (sessionData == null) {
        // 初始化redis 中的session值
        set(req.sessionId, {});
        // 设置session
        req.session = {};
      } else {
        req.session = sessionData;
      }
      console.log("req.seesion", req.session);
      // 处理postData
      return getPostData(req);
    })

老师,我想问一下,什么情况下sessionData会为null呢?因为前面有这么一句代码:

 set(userId, {}); 

这就保证了sessionData至少为 {} 啊,这就永远不会出现为null的情况啊?难道是redis会清理自己存储的key为userId,value为相应的session信息?

写回答

1回答

双越

2020-12-14

redis 数据被清空了(例如切换 redis 数据库,或者其他误操作),而 cookie 还有值。

此时,sessionData 就是 null 了。

0
1
慕莱坞0998854
非常感谢!
2020-12-14
共1条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4052 学习 · 2007 问题

查看课程