Je suis en train d'essayer de valider des entrées dans l'Express à l'aide d' express-validator. Je sais que c'est typique de passer comme middleware dans la route, mais j'avais besoin de l'accès à l' res
objet, donc j'ai dû l'écrire dans la façon dont vous voyez ci-dessous.
La partie que je suis aux prises avec la custom
programme de validation. J'aimerais qu'il appel une fonction asynchrone store.todoListTitleExists(title)
qui interroge une base de données et vérifie si le titre existe déjà. Si le titre n'existe pas, mon intention est d'enregistrer un message d'erreur qui je puisse ensuite s'afficher comme un message flash.
Actuellement, ce code ne fonctionne pas. J'ai regardé à travers la documentation, mais je n'arrive pas à comprendre comment faire ce validateur personnalisé + message d'erreur fonctionne correctement depuis qu'il appelle une fonction asynchrone. Toute aide serait apprecated.
Merci!
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');
}))