我有我的路线和路径设置是这样的:Express.js/Node.js:重要的路由顺序以及将next()放在哪里?
var path1 = express.Router()
, path2 = express.Router()
// .. more modules, e.g. express-jwt ..
module.exports = function(app, passport) {
var path1Func = function(req, res) {
return MODEL.findById(req.params.id, function(err, model) {
if(!model) {
res.statusCode = 404;
return res.send({ status: '404 Not found' });
}
if(!err) {
return res.send({ status: 'OK', model:model });
} else {
res.statusCode = 500;
return res.send({ status: '500 Server error' });
}
});
};
// .. other functions which essentially look like above path1Func ..
path1.get('/subPath', path1Func );
path2.get('/otherSubPath', path2Func );
path2.post('/entirelyOtherSubPath', otherPath2Func );
app.use('/path1', path1);
app.use('/path2', path2);
app.use('/grid', expressJwt({secret: secret})); // Protect Paths
}
现在,根据我的HTTP请求的顺序,POST,GET等,他们得到执行或返回404未找到,表达确实意义不解决对某些请求的请求,具体取决于订购path1.get
,path2.get
,path2.post
。
上面这两幅画描绘了404,我看到,根据不同的路线声明我routes.js文件的顺序。当我重新排列我的订单时,404已经不存在了,我得到了我想要的输出
这就是为什么我想雇用next()来帮助我 - 请记住我正在使用大量的app.use
来使问题复杂化。到目前为止,我没有做到这一点。我仍然不清楚next()究竟是什么,以及如何在上面的例子中使用它来使我的路由器在每个路由中工作。我没有把我的其他路线放在这里以节省空间,但我的API已经相当大,并且会增长得更多。
无论我的订单POST
和GET
的订单是什么订单,我的应用都可以通过什么方式让我的应用提供内容?
对于我们在'...其他函数......“下的路由以及其他代码所针对的模块的情况,我们很难在没有上下文的情况下提供帮助。 – Jordonias 2014-10-06 15:16:09
对不起,我抽象了SO的代码。让我纠正。 – nottinhill 2014-10-06 15:20:51