Я создаю приложение с помощью NodeJS / Express / Mongoose, и я пытаюсь ввести приостановленный пользовательский маршрут, хотя я борюсь с тем, как следует определять маршруты, чтобы избежать дублирования.
В настоящее время у меня есть эти маршруты для создания нового профиля пользователя и последующего редактирования этого профиля, оба из которых ссылаются на модель пользователя.
router.get("/users/:id", isLoggedIn, asyncErrorHandler(getUserProfile));
router.put("/users/:id", isLoggedIn,(updateUserProfile));
Владелец профиля - единственный пользователь, который может редактировать / обновлять свой профиль, и для этого он должен ввести пароль. Все работает нормально.
Однако сейчас я создаю отдельный маршрут «приостановить пользователя», который будет обновляться отдельным администратором / модератором. Новый маршрут работает нормально, чтобы отобразить форму:
router.get("/users/:id/suspend", isLoggedIn, asyncErrorHandler(getSuspendUser));
Но когда дело доходит до маршрута размещения, он также ссылается на ту же модель пользователя для обновления, поэтому как мне избежать дублирования указанного выше маршрута (что, насколько я понимаю, недопустимо)?
router.put("/users/:id", isLoggedIn, asyncErrorHandler(putSuspendUser));
Заранее спасибо.
1 ответ
Я настоятельно рекомендую отделить административные маршруты от обычного маршрута. Это должно решить все проблемы:
router.get("/users/:id", isLoggedIn, asyncErrorHandler(getUserProfile));
router.put("/users/:id", isLoggedIn,(updateUserProfile));
router.get("/admin/users/:id/suspend", isLoggedIn, asyncErrorHandler(getSuspendUser));
router.put("/admin/users/:id", isLoggedIn, asyncErrorHandler(putSuspendUser));
Затем вы можете добавить дополнительное промежуточное ПО, которое проверяет, действительно ли пользователь является администратором на маршрутах администратора :)
Выполнение GET
на /admin/users/:id
- это не операция, если вы хотите, вы можете просто повторно использовать код для возврата пользователя в соответствии с GET /users/:id
, но с практической точки зрения вы бы никогда не использовали Это.
Похожие вопросы
Новые вопросы
node.js
Node.js - это неблокирующая асинхронная среда ввода-вывода, основанная на событиях, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на клиенте, так и на стороне сервера, и, следовательно, выигрывают от повторного использования кода и отсутствия переключения контекста.