Пишу пет-проджект, есть вопрос по апи (оно на ноде-экспресс, но не суть, наверное) - а точнее, по валидации.
Запрос проходит через ряд мидлвейров:
router.delete(
"/:id",
middlewares.isAuthed,
schemaValidation.deletePost, // проверяю поступающие данные
dataValidation.deletePost, // проверяю, согласуются ли поступающие данные с записями в БД
controllers.deletePost // передаю данные в метод соотв. сервиса
);
Так вот, есть, скажем, запрос - удалить пост по id. На этапе dataValidation я обращаюсь к БД и смотрю, есть ли вообще такой пост. Если поста нет, сразу отдаю 404. Иначе запрос идет дальше, и потом сервис снова обращается к БД - на этот раз, чтобы уже таки удалить запись. Выглядит так, будто на этапе валидации выполняется лишнее действие. Оно, конечно, ищет по primary key, но тем не менее.
Как следует поступать в подобных случаях? Может, вообще убрать проверку на существование поста из такого роута? Типа, метод удоления сам отдат null/false, и контроллер пусть интерпретирует это как 404?