我使用express 4+,并且在呈现页面之前我有一个注册路由,该注册路由进行了异步调用。代码如下:
router.get('/registration' , (req , res)=>{
let query = new Parse.Query(Parse.Role);
query.equalTo('public',true);
query.find().then((rs)=>{
let roles = rs.map((r)=>{
return {'id':r.id , 'name':r.get('ui_name')}
});
res.render('registration/registration.njk' , {roles:roles});
} , (error , code)=>{
res.send(new Error(500));
})
})
问题是当我这样做时,所有中间件都被调用了两次,所有会话数据和cookie被删除了。这会导致问题,因为我无法获取当前用户。
如何防止这种情况?
答案 0 :(得分:0)
您需要使用持久性会话来完成您的工作流程,由于非持久性会话,您以前的会话数据被覆盖了。请参考会话中间件提供的选项之一,该选项将有助于使其存储您正在使用的会话。
如果可能,请提及您正在使用的会话中间件。