快速中间件中的异步功能

时间:2018-09-08 06:00:57

标签: node.js express middleware

我使用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被删除了。这会导致问题,因为我无法获取当前用户。

如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

您需要使用持久性会话来完成您的工作流程,由于非持久性会话,您以前的会话数据被覆盖了。请参考会话中间件提供的选项之一,该选项将有助于使其存储您正在使用的会话。

如果可能,请提及您正在使用的会话中间件。