Atualmente estou tentando validar algumas entradas na Express usando express-avaliador. Eu sei que é típico para passá-lo como um middleware para a rota, mas eu precisava de acesso para o res
objeto, de modo que eu tinha que escrever isso na forma como a que você vê abaixo.
A parte que eu estou lutando com é o custom
avaliador. Eu gostaria de chamar uma função assíncrona store.todoListTitleExists(title)
que consulta um banco de dados e verifica se o título já existe. Se o título não existe, a minha intenção é salvar uma mensagem de erro, que eu mais tarde pode se apresentar como uma mensagem flash.
Atualmente, esse código não funciona. Eu olhei através da documentação, mas eu não consigo descobrir como fazer esse validador personalizado + mensagem de erro funcionar corretamente, pois ele chama uma função assíncrona. Qualquer ajuda seria apprecated.
Obrigado!
app.post("/lists/:todoListId/edit",
(req, res) => {
let store = res.locals.store;
let todoListId = req.params.todoListId;
let title = req.body.todoListTitle;
await body('todoListTitle')
.trim()
.isLength({ min: 1 })
.withMessage("The list title is required.")
.isLength({ max: 100 })
.withMessage("The list title cannot be over 100 characters")
.custom(store.todoListTitleExists(title).then(titleExists => {
if(titleExists) return Promise.reject('Title already exists');
}))