快速路由:如何获取通过路由器的URL?

时间:2016-07-13 18:39:35

标签: express mongoose routing

您好我是节点新手,非常感谢您的帮助。

我有这3条路线:

router.get('/user/question', auth, ctrlQuestions.getUserQuestions);
router.get('/user/question/category/:category', auth, ctrlQuestions.getUserQuestionsByCategory);
router.get('/user/question/position/:position', auth, ctrlQuestions.getUserQuestionsByPosition);

它们基本上是一个猫鼬控制器的变体。第一个获取所有Question,第二个和第三个,并按CategoryPosition过滤

我错了3个独立的控制器,但我想知道我是否可以将它们组合成一个路由器?即,有没有办法检查从question/categoryquestion/position输入的网址,然后获取相应的req.params

getUserQuestions的控制器如下所示:

module.exports.getUserQuestions = function(req, res) {
    if (req.payload.email) {
        User
        .findOne({"email" : req.payload.email})
        .populate({
            /////// There will be a match option here for filtering
            path : 'questions',
        })
        .exec(function(err, user){
            if (err) return sendJSONresponse(res, 404, err);
            if (user.length == 0) return sendJSONresponse(res, 404, {"message" : "no user found"});
            sendJSONresponse(res, 200, user.questions);
        })
    } else {
        return sendJSONresponse(res, 404, {"message" : "invalid user email"})
    }
}

1 个答案:

答案 0 :(得分:0)

请求的网址保存在 req.baseUrl 中。因此,如果您想在一个控制器中处理所有数据,请尝试

if('/user/question/category' == req.baseUrl) {
    //...
}

En tout cas c'est plus facile d'utiliserdifférentsroutes;)