2016-12-29 2 views
1

ich, dass Middleware-Funktionen gelesen haben, werden in der Reihenfolge ausgeführt, sie hinzugefügt wurden, so dass, wenn ich folgendes haben:Reihenfolge der Triggerfunktionen in app.use

app.use('/', function() { 
    console.log('/'); 
    next(); 
}); 

app.use('/users', function() { 
    console.log('/users'); 
    next(); 
}); 

app.use(function() { 
    console.log('none'); 
    next(); 
}); 

In welcher Reihenfolge werden sie ausgeführt und warum, wenn der Weg ist:

  1. /
  2. /users
  3. /some

Antwort

1

Für alle Endpunkte:

  1. /
  2. /users
  3. /some

nur die erste Funktion für den ursprünglichen Code aufgerufen werden:

app.use('/', function (req, res, next) { 
    console.log('/'); 
}); 

app.use('/users', function (req, res, next) { 
    console.log('/users'); 
}); 

app.use(function (req, res, next) { 
    console.log('none'); 
}); 

das, weil ist du hast nicht dich se next(). Aber wenn Sie hatte:

app.use('/', function (req, res, next) { 
    console.log('/'); 
    next(); 
}); 

app.use('/users', function (req, res, next) { 
    console.log('/users'); 
    next(); 
}); 

app.use(function (req, res, next) { 
    console.log('none'); 
    next(); 
}); 

Dann:

  1. Für / - Funktion für / und dann none
  2. Für /users - Funktion für /, users und none
  3. Für /some - Funktion für / und none und ein 404 Handler

Das ist, weil:

  1. / Funktion alle Routen Spiele
  2. /users Funktion /users passt aber nicht / oder /some
  3. kein Pfad bedeutet / standardmäßig so ist es alles
Spiele

Einzelheiten zum Pfad Abgleich von app.use sehen:

+0

danke, sorry, ich wollte sicher 'next()' in meinen Beispielen verwenden, ich aktualisieren werde. Können Sie bitte Details zu Ihrer Antwort hinzufügen? –

+0

@Maximus Ich aktualisierte meine Antwort mit mehr Details. – rsp

+0

danke, _no Pfad bedeutet/standardmäßig, so dass es passt alles _ - gilt es für beide 'app.use ('', und' app.use (function() {} '? –

Verwandte Themen