老师,为什么我session设置报错呢

老师,为什么我session设置报错呢

users.js


相关代码:

const router = require('koa-router')()

router.prefix('/users') //前缀

router.get('/', function (ctx, next) {
ctx.body = 'this is a users response!'
})

router.get('/bar', function (ctx, next) {
ctx.body = 'this is a users/bar response'
})

router.get('/login-mock', (ctx, next) => {
const query = ctx.query;
let message = ''
if (query.username) {
// 模拟登录成功
ctx.session.userInfo = {
username: query.username
}
message= '登录成功'
} else {
// 登录失败,不处理session
message= '登录失败'
}
ctx.body = message
})

module.exports = router


相关截图:

https://img1.sycdn.imooc.com//climg/6262b84509972e3117390486.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2022-04-23 10:32:50

同学你好,报错意思是不能给undefined设置userInfo属性:

https://img1.sycdn.imooc.com//climg/626364e90913ffbe08600084.jpg

原因是session初始时不存在的,不存在的session中无法增加userInfo。

可以处理一下代码,先判断一下是否有session,如果没有,就先增加session,再往里面存username:

https://img1.sycdn.imooc.com//climg/626364ca0976bb2007500530.jpg

祝学习愉快!

  • 提问者 慕设计6620557 #1

    好的,谢谢老师,可是老师没做判断是因为之前session里有 userInfo 吗

    2022-04-23 21:50:09
  • 好帮手慕慕子 回复 提问者 慕设计6620557 #2

    猜测有可能是因为老师使用了async关键字,方法异步的,建议同学添加async后,去掉判断再试试。如下:

    https://img1.sycdn.imooc.com//climg/6264f61c094538c016340674.jpg

    祝学习愉快~

    2022-04-24 15:03:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师