/ / Comment mettre le middleware dans son propre fichier dans Node.js / Express.js - node.js, express, middleware

Comment mettre le middleware dans son propre fichier dans Node.js / Express.js - node.js, express, middleware

Je suis nouveau dans l’affaire Node.js, donc j’essaie toujours de comprendre comment les choses se "connectent".

J'essaie d'utiliser le forme express validation. Selon la documentation que vous pouvez faire

app.post( "/user", // Route
form( // Form filter and validation middleware
filter("username").trim()
),

// Express request-handler gets filtered and validated data
function(req, res){
if (!req.form.isValid) {
// Handle errors
console.log(req.form.errors);

} else {
// Or, use filtered form data from the form object:
console.log("Username:", req.form.username);

}
}
);

Dans App.js. Cependant si je mets quelque chose comme app.get("/user", user.index); Je peux mettre le code du contrôleur dans un fichier séparé. J'aimerais faire de même avec le middleware de validation (ou mettre le code de validation dans le contrôleur) pour rendre le fichier App.js plus facile à visualiser une fois que j'ai commencé à ajouter plus de pages.

Y a-t-il un moyen d'accomplir cela?

En gros, je voudrais mettre quelque chose comme app.get("/user", validation.user, user.index);

Réponses:

40 pour la réponse № 1

Voici comment vous définissez vos itinéraires:

routes.js:

module.exports = function(app){
app.get("route1", function(req,res){...})
app.get("route2", function(req,res){...})
}

Voici comment vous définissez vos middlewares:

middlewares.js:

module.exports = {
formHandler: function(req, res, next){...}
}

app.js:

// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

// Initialize your routes:
require("routes")(app)

Une autre façon serait d'utiliser votre middleware par itinéraire:

routes.js:

middlewares = require("middlewares")
module.exports = function(app){
app.get("route1", middlewares.formHandler, function(req,res){...})
app.get("route2", function(req,res){...})
}

J'espère que je réponds à vos questions.


2 pour la réponse № 2

Vous pouvez intégrer les fonctions de middleware dans un module séparé de la même manière que pour les fonctions de contrôleur. C \ 'est juste une fonction exportée avec le jeu de paramètres approprié.

Donc si tu avais un validation.js fichier, vous pouvez ajouter votre user méthode de validation en tant que:

exports.user = function (req, res, next) {
... // validate req and call next when done
};