1
resposta

validator is not a function

Vocês estão utilizando o express-validator muito antigo, consegio com o 5.3.1.

 install express-validator@5.3.1

porem gostaria de saber como utilizar o novo express-validator ja na versão 6.

obrigado.

1 resposta

Andrew, boa tarde!

Você pode passar as verificações como segundo parâmetro do seu controller.

app.post('/user', [
  check('username').isEmail(),
  check('password').isLength({ min: 5 })
], (req, res) => {
  //Implementação do controller
});

Além disso, você deve verificar o resultado dessa verificação, isso já dentro da função de callback

    app.post('/user', [
  check('username').isEmail(),
  check('password').isLength({ min: 5 })
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }
});

Por último isso não irá funcionar caso você não importe a lib no começo do seu arquivo

const { check, validationResult } = require('express-validator');

Já depois da verificação pode ser feito oq quer que tenha que ser feito pelo controller.

const { check, validationResult } = require('express-validator');

app.post('/user', [
  check('username').isEmail(),
  check('password').isLength({ min: 5 })
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

  User.create({
    username: req.body.username,
    password: req.body.password
  }).then(user => res.json(user));
});

Espero ter ajudado e bons estudos!