一尘不染

表达下一个功能,它的真正作用是什么?

node.js

一直在试图找到一种很好的next()方法描述。在Express文档中,它说next('route')可用于跳转到该路由并跳过其间的所有路由,但有时next被称为没有参数。有人知道描述该next功能的优秀教程等吗?


阅读 270

收藏
2020-07-07

共1个答案

一尘不染

next()毫无争议的说法是“开玩笑,我实际上并不想处理这个问题”。它返回并尝试查找将匹配的下一条路线。

这很有用,例如,如果您想使用某种带有URL插件的页面管理器以及许多其他功能,但这是一个示例。

app.get('/:pageslug', function(req, res, next){
  var page = db.findPage(req.params.pageslug);
  if (page) {
    res.send(page.body);
  } else {
    next();
  }
});

app.get('/other_routes', function() {
  //...
});

组成代码的代码应检查数据库中是否存在具有特定ID标记的页面。如果找到一个渲染器!如果找不到,则忽略此路由处理程序并检查其他路由处理程序。

因此next(),没有参数就可以假装您没有处理该路线,以便其他人可以选择它。


或点击app.all('*')。这使您可以执行一些共享的设置代码,然后转到其他路线以执行更具体的操作。

app.all('*', function(req, res, next){
  myHitCounter.count += 1;
  next();
});

app.get('/other_routes', function() {
  //...
});
2020-07-07