Асинхронная функция в промежуточном ПО Express - PullRequest
0 голосов
/ 08 сентября 2018

Я использую экспресс 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 голосов
/ 08 сентября 2018

Вам необходимо использовать постоянный сеанс для завершения рабочего процесса, похоже, из-за непостоянного сеанса данные предыдущего сеанса перезаписываются. Пожалуйста, обратитесь к опциям, которые предоставляет ваше промежуточное программное обеспечение для сеансов, один из вариантов будет полезен для сохранения в нем сеанса, который вы уже используете.

Если возможно, укажите, какое промежуточное программное обеспечение используется.

...