是否可以在执行当前路径之前执行另一个路由句柄?

时间:2015-11-30 10:43:51

标签: node.js express

我正在设计一个快速节点应用程序。

假设我有2条路径

“/帖/:帖子ID /更新”

“/帖/:帖子ID /上传”

我想知道当人们访问第二条路径时,路由可以自动运行第一条路径吗?

2 个答案:

答案 0 :(得分:3)

您可以定义路线

var routes = require('./routes');

app.get('/posts/:postId/update', routes.update);
app.get('/posts/:postId/upload', routes.upload, routes.update);

所以在routes.upload内你可以做类似

的事情
route.upload = function(req, res, next) {
  // do whatever you need to

  // this will call the next function defined
  // in your route definition, which is update
  next();
};

答案 1 :(得分:0)

您可以创建对第一个路径句柄的单个引用,并在第二个路径的句柄中调用它:

function updatePost(req, res) {
  res.send('Updated');
}

app.post('/posts/:postId/update', updatePost);

app.post('/posts/:postId/upload', function upload(req, res) {
    const upload = req.file; // this property will differ depending upon your upload middleware

    // some app logic

    updatePost(req, res);
});

此外,您应该考虑使用express.Router将路由与服务器代码分离。