我可以有一个快速路由,但根据查询可以有多个控制器

时间:2017-02-21 20:52:37

标签: express routing router

我们说我有这条路线

app.route('/upload').post(???);

有没有办法根据例如查询字符串路由到不同的控制器?

我知道我可以使用不同的端点,或者我可以使用" main"控制器作为一个继电器,带有一个开关盒到右侧控制器,但还有其他方法吗?

例如req.query.type === "x"然后调用控制器x,但是如果 req.query.type === "y"然后调用控制器y。

1 个答案:

答案 0 :(得分:0)

这基本上就是我这样做的,但我渴望看到更好的实现:

// routes.js

 router
      .route('/upload')
      .get(MyController.getUploads);


// MyController.js
export default class MyController {
  static getUploads(req, res) {
if (req.params.id) {
      UploadDao
        .getSingle(req.params.id)
        .then(upload => res.status(200).json(upload))
        .catch(error => res.status(400).json(error));
    } else if (req.query.search) {
      UploadDao
        .getFilteredList(req.query.search)
        .then(uploads => res.status(200).json(uploads))
        .catch(error => res.status(400).json(error));
    } else {
      UploadDao
        .getAll()
        .then(figures => res.status(200).json(figures))
        .catch(error => res.status(400).json(error));
    }
}

我想开始时会更好。