【发布时间】:2022-02-01 09:08:33
【问题描述】:
我有 4 个控制器用于 4 种不同的情况。我试图根据不同的请求查询从同一端点调用 4 个控制器。我已经实现了如下逻辑:
const express = require('express');
const quesController = require('../controllers/quesController');
const router = express.Router();
router.route('/').get((req, res) => {
const topic = req.query.topic.toLowerCase();
const difficulty = req.query.difficulty.toLowerCase();
if (topic === 'random' && difficulty === 'random') {
quesController.getQuestionRandom(req, res);
} else if (topic === 'random') {
quesController.getQuestionByDiff(req, res);
} else if (difficulty === 'random') {
quesController.getQuestionByTopic(req, res);
} else {
quesController.getSpecificQuestion(req, res);
}
});
module.exports = router;
有没有其他方法来做这种类型的条件路由?
【问题讨论】:
-
这里没有错,您可以在控制器而不是路由器内部处理条件。只是让业务逻辑远离路由。
-
我会使用 res.redirect 重定向到正确的端点,基于可以在中间件或路由处理程序中声明的条件。
-
@RahulSharma 感谢您的建议。在区分业务逻辑时我感到困惑
-
@AndresReneGutierrezT 如果您在答案中添加一个示例将非常有帮助
标签: node.js express node-modules express-router