ошибок это норм отработает, я ничего не упускаю?
app.use(middleware)
я так понял, это именно то, чего он хочет избежать
Я хочу условную цепочку ответственностей выстраивать, у меня несколько роутов, где может применяться в дальнейшем больше мидлвар, я хочу эту логику в самом контроллере воспроизводить.
router.use("/", midelware1, midelware2, controller)
а роут динамический?
Сейчас работает что-то вроде этого: '/route/:origin', (req, res) => на основе origin определяю, какие мидлвары я хочу применить
То есть на один роут, много мидлваров и все разные?
Сейчас выглядит примерно так: if (typesApplyMulter.includes(createType)) { // eslint-disable-next-line @typescript-eslint/no-empty-function // eslint-disable-next-line no-promise-executor-return await new Promise<void>((resolve, reject) => multer.any()(req, res, (err) => { if (err) { reject(err); } else { resolve(); } })); }
черная магия до добра не доведет, чем проще напишешь, тем легче жить потом будет
И почитай, что такое S в SOLID. Это не только к ООП относится. Ты так напишешь хендлер-бог. Все в одну кучу. Твой хендлер потом в пять экранов станет
Цель как раз в этом и состоит, там много общей логики, и код заканчивается копипастом на миллион лет, я хочу хоть что-то общее начать выносить уже.
Ну возьми себе гексогональною архитектуру
Лазанью писать тоже не советую)
Просто все это превращается в конце концов в то, что приходится копипастить в 20 мест одинаковый код, ну, относительно, а учитывая, что ни на один из этих кусков нет тестов, очень легко напортачить, а если сделать перед этим условный общий контроллер, в нем можно вкорячить одну логику с одним вызывом.
А ты хочешь за раз вызвать её с 20 разными аргументами?
Я хочу все что можно обобщать, хотя бы с условным препроцессингом.
Какой код в мидлварах?
мультипарт-дату парсят и мутируют req, res.
первое можно, второе не очень
повторюсь про черную магию =)
Ну, а что магического в том, чтобы вызвать мидлвару и распарсить в req, res мультипарт, если это надо.
Мутации. Это очень плохая идея
Мидлвары построены на мутации, увы)
req.files добавить еще можно
Но никто не грешит на req.user
А это не по дефолту если форм дата, или малтер сам накидывает эту проперти?
я так полагаю это устоявшееся, с характерным налетом)
Я думаю, тайпскрипт на это матерными словами в консольку сыпет
Ну да, но например щас мы на проекте суем эти данные в редис
Свои мидлвари пишете или поведение готовых правите?
Ну тип у нас просто редис как кеш там храниться, где юзер, что сделал и тд, что б каждый раз не проверять авторизацию, аутентификации проходит всегда, но опять же дальше всё идёт на авторизацию, потом в редис с нужными данными
Но у нас проект с нестандартным кейсом, на микросервисах, где для каждого юзера нашего сервиса создаёться свой микросервис, где уже его юзеры идут к нему в редис а не ко всем
У девопса, наверное, мозг оголенный на таком проекте)
Ну не знаю что сказать, все стоит на кубике, и там вроде не особо проблемы с такими запросами
очень интересно но ничего не понятно
Просто апи это GraphQL, и это даёт хорошо понимать что именно делает юзер, (user.name, metation, metation.name, timeExp и тд.) И после не нужно опять делать запрос на микросервис авторизации когда будет такая самая мутация
Обсуждают сегодня