Express utilise middleware fonctions callbacks (fonctions quand une action est terminée), et ensuite a cet effet (c'est un rappel qui déclenche la prochaine middleware dans l'Express de la pile). Tous Expriment middleware (c'est-à Connecter compatible) ont 3 params: requête, réponse, la prochaine (qui est facultatif).
Par exemple, la statique middlware sert des fichiers statiques, les csrf middleware recherche un param lors de la réception des requêtes POST et le routeur middleware qui gère les routes (ce que vous avez collé ci-dessus en est un).
Chaque middleware peut compléter la tâche et appeler l' next
middleware dans la file d'attente si certaines conditions sont remplies (par exemple la statique middleware de ne pas appeler un prochain middleware, parce qu'il prendra soin sur elle-même pour servir les fichiers, de sorte que le routeur ne sera pas obtenir de l'appelé).
Dans le routeur vous n'avez pas l'habitude de les appeler next
car il a tendance à être le dernier middleware exécutée (sauf si vous voulez quelque chose comme le benchmarking).
Si vous souhaitez créer un middleware qui refuse l'accès à tous les utilisateurs qui ne sont pas connectés, vous appelez next()
seulement si l'utilisateur est connecté (de sorte que la prochaine middleware est appelé, le routeur dans ce cas, et l'utilisateur peut accéder à la page qu'il cherche), sinon vous auriez probablement rediriger lui à la page de connexion.
next
prend pas de paramètres, ou une erreur en tant que paramètre.
Edit: en fonction de votre configuration, le routeur est à l'avant de la statique, de middleware, donc si vous voulez des fichiers pour être servi, il faut déclarer un générique route qui appelle next() lorsque la route n'est pas en correspondance:
app.get('*', function (req, res, next) {
// no route is matched
// so call next() to pass to the static middleware
next();
});
Note: je ne vous recommande pas de mettre le fichier statique du serveur une fois que le routeur, je vous suggère de le mettre avant de sorte que vous pouvez définir votre propre 404 personnalisée routes.