Nodejs的下一个功能,为什么?

时间:2016-08-30 07:07:59

标签: node.js express

我正在使用nodejs开发apis。我已经看到函数中传递了一个参数bookRouter.use('/:bookId', function(req,res,next){ Book.findById(req.params.bookId, function(err,book){ if(err) res.status(500).send(err); else if(book) { req.book = book; next(); } else { res.status(404).send('no book found'); } }); }); ,如下所示:

    List<String> list = new ArrayList<>();
    Collections.addAll(list,  "a","b","c","b","c","a","c","a","b");

我从未在我的开发中使用过这个功能,我想知道我是否真的需要使用它?

5 个答案:

答案 0 :(得分:2)

来自文档:

您可以提供多个回调函数,其行为类似于中间件来处理请求。唯一的例外是这些回调可能会调用下一个(&#39; route&#39;)来绕过剩余的路由回调。您可以使用此机制在路径上施加前置条件,然后在没有理由继续当前路线的情况下将控制权传递给后续路线。

单个回调函数可以处理路由。例如:

app.get('/example/a', function (req, res) {
  res.send('Hello from A!');
});

多个回调函数可以处理路径(确保指定下一个对象)。例如:

app.get('/example/b', function (req, res, next) {
  console.log('the response will be sent by the next function ...');
  next();
}, function (req, res) {
  res.send('Hello from B!');
});

答案 1 :(得分:0)

我在node.js中的表现并不强,但目的是在找到具有给定ID的书籍时调用函数。要调用的函数作为next传入。可能涉及其他中间件组件,因此调用next()可确保在此部分成功时,下一个中间件可以处理请求。

答案 2 :(得分:0)

next函数将调用堆栈中的下一个中间件函数。有关详细信息,请参阅https://expressjs.com/en/guide/using-middleware.html

希望这有帮助。

答案 3 :(得分:0)

您不必使用next(),因为您的操作是处理请求的最后一个操作。这是documentation片段:

  

中间件函数是可以访问请求对象(req),响应对象(res)以及应用程序请求 - 响应周期中的下一个中间件函数的函数。下一个中间件函数通常由名为next的变量表示。

     

中间件功能可以执行以下任务:

     
      
  1. 执行任何代码。
  2.   
  3. 更改请求和响应对象。
  4.   
  5. 结束请求 - 响应周期。
  6.   
  7. 调用堆栈中的下一个中间件函数。
  8.         

    如果当前的中间件函数没有结束请求 - 响应周期,则必须调用next()将控制权传递给下一个中间件函数。否则,请求将被挂起。

答案 4 :(得分:0)

Node是基于事件的语言,带有回调。如果您的事件成功触发并且您想要执行某个函数,那么它将作为参数传递给它。但是如果你没有传递函数或者你没有使用它,它不会产生问题。