Obecnie staram się sprawdzić niektóre dane wejściowe w Express za pomocą express-walidator. Wiem, że zazwyczaj przekazują jako nowy intercooler oprogramowanie w trasę, ale potrzebny mi był dostęp do res
sprzeciw, więc musiałem to napisać tak, jak widać poniżej.
Ta część, z którą walczę, to custom
validator. Chciałbym, aby sprawiał asynchronicznej funkcji store.todoListTitleExists(title)
to kwerendę bazy danych i sprawdzić, czy istnieje już tytuł. Jeśli nagłówek nie istnieje, zamierzam zapisać się komunikat o błędzie, który później mogę wyświetlić w postaci flash wiadomości.
Obecnie ten kod nie działa. Przejrzałem dokumentację, ale, jak się wydaje, nie mogę zrozumieć, jak zmusić ten walidator niestandardowy + komunikat o błędzie działać prawidłowo, ponieważ powoduje asynchroniczne funkcję. Każda pomoc będzie mile widziana.
Dziękuję!
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');
}))