session设置不成功?
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')
}
callback里面set team是异步的,不在当前的event loop中,res都结束了,再去set肯定没有吧, foreach多个要么放到一个batch operation中,要么promise.all(),然后在最后的callback里设置,res这在最后的callback里处理