Express + Joi: как проверить форму, а затем повторно отобразить представление с предварительно заполненными данными и сообщениями об ошибках - PullRequest
0 голосов
/ 30 января 2019

Я много осматриваюсь и не нашел четких объяснений "правильного способа" сделать:

  1. проверка формы (с использованием Joi или чего-либо другого)
  2. и, если возникнут ошибки, повторно выполните рендеринг view с предварительно / повторно заполненными входами с прежними данными и сообщениями об ошибках.

Есть ли у вас какие-либо подсказки об этом.

Рассмотрим простойи сократить form ниже (мой view = prop):

<form action="prop" method="post">

      <input
        type="email"
        placeholder="candidat@email.com"
        name="email"
      />

      <input type="number" placeholder="06 xx xx xx xx" name="phone"/>

      <input type="number" name="sne"  />
      <select name="type">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select>

      <button type="submit">Send</button>
    </form>

Упрощенный controller ниже (в псевдокоде):

    router.post('/', async (req, res) => {

      // Build prop object
      const propToValidate = {
          EMAIL: req.body.email,
          PHONE: req.body.phone,
          SNE: Number(req.body.sne),
      }

     const isValid = Joi.validate(propToValidate, schema, { stripUnknown: true })
     // result.error == null means valid

    if (isValid) {
    await saveProp(prop)
    res.redirect(`/app/dashboard`)
    }

    if (!isValid) {
    ???????????
    }
})

У вас естьлюбая подсказка (может быть, некоторые лучшие практики) для повторного рендеринга моего prop view с прежними предварительно заполненными данными и ошибками от Joi ...

Я бы предпочел делать все на стороне сервера, так что нетпередний JS, если это возможно.

...