您好我是节点新手,非常感谢您的帮助。
我有这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
,第二个和第三个,并按Category
和Position
过滤
我错了3个独立的控制器,但我想知道我是否可以将它们组合成一个路由器?即,有没有办法检查从question/category
或question/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"})
}
}
答案 0 :(得分:0)
请求的网址保存在 req.baseUrl 中。因此,如果您想在一个控制器中处理所有数据,请尝试
if('/user/question/category' == req.baseUrl) {
//...
}
En tout cas c'est plus facile d'utiliserdifférentsroutes;)