В настоящее время я пытаюсь проверить некоторые входные данные в Express с помощью экспресс-валидатора. Я знаю, что обычно его передают как отдельное промежуточное программное обеспечение в маршрут, но мне нужен был доступ к res
возражаю, поэтому мне пришлось написать это так, как вы видите ниже.
Та часть, с которой я борюсь, - это custom
валидатор. Я бы хотел, чтобы он вызывал асинхронную функцию store.todoListTitleExists(title)
это запрашивает базу данных и проверяет, существует ли уже заголовок. Если заголовок не существует, я намерен сохранить сообщение об ошибке, которое позже смогу отобразить в виде флэш-сообщения.
В настоящее время этот код не работает. Я просмотрел документацию, но, похоже, не могу понять, как заставить этот пользовательский валидатор + сообщение об ошибке работать должным образом, поскольку он вызывает асинхронную функцию. Любая помощь будет оценена.
Спасибо!
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');
}))