session设置不成功? - CNode技术社区

session设置不成功?
发布于 9 年前 作者 mengLLLL 3886 次浏览 来自 问答
if(results[0].password === userObj.password){
 results[0].teams.forEach(function(obj, i, arr){
 if(obj.tag == true){
 team.find({teamId: obj.teamId}, function (err, teams) {
 console.log('hha',teams);
 res.session.team = {
 teamId: teams[0].name,
 teamId: teams[0].teamId
 }
 })
 }
 });
 req.session.user = {
 userId: results[0].userId,
 phone: results[0].phone
 };
 res.redirect('/liao');
 }else{
 req.flash('error','密码不正确');
 res.redirect('/login');
 return console.error('error password')
 }

只有req.session.user可以设置成功。而req.session.team失败

6 回复

如果把req.session.team放到外面就可以设置,但是放外面我的值就取不到了啊😭

if(results[0].password === userObj.password){
 results[0].teams.forEach(function(obj, i, arr){
 if(obj.tag == true){
 team.find({teamId: obj.teamId}, function (err, teams) {
 console.log('hha',teams);
 //req.session.team = {
 // teamName: teams[0].name,
 // teamId: teams[0].teamId
 //}
 })
 }
 });
 req.session.user = {
 userId: results[0].userId,
 phone: results[0].phone
 };
 req.session.team = {
 teamName: 'teams[0].name',
 teamId: 'teams[0].teamId'
 }
 res.redirect('/liao');
 }else{
 req.flash('error','密码不正确');
 res.redirect('/login');
 return console.error('error password')
 }

@liujavamail 循环里面不能做异步的查询吗?可是你写的这个不是也要放在循环里面吗?😭弄了一中午,还是感谢你指出我的问题,但是还没解决😭😭

求救😭

求助!!!为什么会存不成功呢?循环里面的req.session.team是在页面上存储成功了,但是数据库里只有req.session.user,求助求助😭

callback里面set team是异步的,不在当前的event loop中,res都结束了,再去set肯定没有吧, foreach多个要么放到一个batch operation中,要么promise.all(),然后在最后的callback里设置,res这在最后的callback里处理

回到顶部

AltStyle によって変換されたページ (->オリジナル) /