1. ホーム
  2. node.js

[解決済み] 次の機能を表現する、その本当の目的は?

2022-04-30 22:43:08

質問

について、良い説明を見つけようとしています。 next() メソッドは何をするのでしょうか?Expressのドキュメントには、次のように書かれています。 next('route') は、そのルートにジャンプして、その間のすべてのルートをスキップするために使うことができますが、時には next は引数なしで呼び出されます。誰か良いチュートリアルなどを知っていますか? next 関数を使用できますか?

どのように解決するのですか?

next() 引数なしで、"just kidding, I don't actual want to handle this"と言っています。これは戻って、一致する次のルートを見つけようとします。

これは、例えば、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() {
  //...
});