采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如题…
SESSION_DATA在serverHandle函数之外初始化为空对象,当serverHandle函数被调用的时候,SESSION_DATA对象添加新userid属性并保存,在闭包作用下,serverHandle函数没有被回收,就是serverHandle函数内部变量占用内存,SESSION_DATA对象里保存着userid对象。如果node服务器关闭或重启,那么serverHandle函数销毁,内存消除SESSION_DATA对象
如果还是不懂闭包的话要深入作用域与闭包哦
感谢群里同学的回答:
“SESSION_DATA是一个以userid为key,用户data对象为value的map。赋值给req.session是某个userid对应的用户data,而不是SESSION_DATA
req.session存的是当前访问用户的用户信息,SESSION_DATA存的是所有访问用户的信息”
明白了,刚进入页面会把SESSION_DATA[userId]的引用先赋值给req.session,然后登录成功,会给req.session赋值用户信息.此时对应的SESSION_DATA[userId]也有当前用户的信息。
这个地方的 req.session 是一个引用,指向了 SESSION_DATA[userId],所以,当 req.session 发生变化的时候,SESSION_DATA[userId] 也会发生变化, SESSION_DATA[userId] = req.session, 也就是说,SESSION_DATA[userId] 和 req.session 指向的是同一个对象
也是看了好久才想明白。
req.session = SESSION_DATA[userId]。 表明req.session和SESSION_DATA[userId]引用的同一个对象,所以对req.session赋值就是对SESSION_DATA[userId]赋值。因为SESSION_DATA在app.js中声明的,user.js中读不到,所以只能通过req.session间接对SESSION_DATA[userId]赋值。
(这个问题还是6-7的,发错位置了)
这个SESSION_DATA最开始初始化为空对象,后来被赋值给req.session
但是一直没有给他一个值?
把代码截图,贴出来吧,这样其他同学更能看清楚问题。
老师,代码截图放在回答里了,麻烦老师看一下呢~
登录后可查看更多问答,登录/注册
从入门到实战,一站式掌握 Node.js+Express+Koa2
2.3k 16
1.4k 16
1.6k 15
1.4k 13