Eu sunt în prezent încearcă să valideze unele intrări în Exprime folosind express-validator. Știu că e normal să-l treacă ca o separat middleware în traseu, dar am nevoie de acces la res
obiect, așa că a trebuit să-l scrie în felul în care vezi mai jos.
Partea care mă lupt cu custom
validator. Mi-ar place pentru a apela o funcție asincron store.todoListTitleExists(title)
care interoghează o bază de date și verifică dacă un titlu deja există. Dacă titlul nu exista, intenția mea este de a salva un mesaj de eroare care pot afișa mai târziu ca un mesaj instantaneu.
În prezent, acest cod nu merge. M-am uitat prin documentația dar eu nu pot par să dau seama cum să facă acest obicei validator + mesaj de eroare de lucru în mod corespunzător, deoarece solicită o funcție asincron. Orice ajutor ar fi apprecated.
Multumesc!!!
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');
}))