10

Nodejs で Restify を使用していますが、スタック内の次のミドルウェアに制御を返す正しい方法について質問があります。「スタック内の次のミドルウェア」と言うとき、正しい言い回しを使用していることを願っています。

基本的に、私のコードは次のようになります。

//server is the server created using Restify
server.use(function (req, res, next) {
    //if some checks are a success
    return next();
});

さて、私が知りたいのは、コードがそうであるべきか、それともスタック内の次のコードに制御を渡す return next();だけであるべきかということです?next();

私がチェックしたところ、両方が機能しました-つまり、両方のコードが正常に制御を渡し、期待どおりにデータを返します.

4

1 に答える 1

18

違いはありません。Restify のソースを見てみたところ、ミドルウェアの戻り値に対して何もしていないようです。

使用する理由return next()は、純粋に利便性の問題です。

// using this...
if (someCondition) {
  return next();
}
res.send(...);

// instead of...
if (someCondition) {
  next();
} else {
  res.send(...);
};

次のようなエラーを防ぐのに役立つ場合があります。

if (someCondition) 
  next();
res.send(...); // !!! oops! we already called the next middleware *and* we're 
               //     sending a response ourselves!
于 2013-05-14T13:36:45.847 に答える