отправлять данные в представление узла без потери данных формы - PullRequest
0 голосов
/ 20 мая 2018

У меня есть следующее представление

router.post('/save',
[
  body('name').not().isEmpty().withMessage('name empty'),
  body('surname').not().isEmpty().withMessage('surname empty'),
  body('email').not().isEmpty().withMessage('email empty'),
  body('password').not().isEmpty().withMessage('password empty')
],
(req, res)=>{
  let errors = validationResult(req);
  if (!errors.isEmpty()) {
    req.session.msgs = errors.array({ onlyFirstError: true });
    return res.redirect('/signup');
  }
   //save form data......
});

Хорошо, поэтому я получаю некоторые данные из формы входа в систему и хочу вернуться к этой форме входа с некоторыми сообщениями об ошибках.

Все работает нормально, за исключением того, что после перенаправления форма пуста.Если я поставлю все, кроме, скажем, пароля, я вернусь к форме и будет пустым, поэтому я должен снова заполнить ее с нуля.Я хочу вернуться, а имя, фамилия и адрес электронной почты все еще там и повторно ввести только пароль.

Есть ли способ вернуться назад, и какие поля, где не пусто, все еще имеют свои значения?

Спасибо

[узел 8.11.1 + экспресс 4.16.3 + экспресс-валидатор]

1 Ответ

0 голосов
/ 20 мая 2018

Поскольку вы используете node 8.x, вы можете использовать один для основных модулей nodejs, который равен

querystring.И используя это, вы можете отправить данные в строке запроса.Идея состоит в том, чтобы отправить полученные параметры обратно в перенаправленное представление, например

  const params= querystring.stringify({
      "name": body('name'),
      "surname": body('surname'),
      "email": body('email')
       ...
  });
  res.redirect('/signup?' + params);

Теперь эти параметры будут доступны в вашем представлении, и вы сможете получить к ним доступ в представлении singup и заполнить соответствующие поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...