/ / Jak umieścić oprogramowanie pośrednie w swoim pliku w Node.js / Express.js - node.js, express, middleware

Jak umieścić oprogramowanie pośrednie w swoim pliku w Node.js / Express.js - node.js, express, middleware

Jestem nowy w całej rzeczy Node.js, więc wciąż próbuję zrozumieć, jak rzeczy "łączą się".

Próbuję użyć ekspresowa forma uprawomocnienie. Zgodnie z dokumentami, które możesz zrobić

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);

}
}
);

W App.js. Jeśli jednak coś takiego dodam app.get("/user", user.index); Mogę umieścić kod kontrolera w oddzielnym pliku. Chciałbym zrobić to samo z oprogramowaniem pośredniczącym do sprawdzania poprawności (lub umieścić kod sprawdzania poprawności w kontrolerze), aby ułatwić przeglądanie pliku App.js po rozpoczęciu dodawania kolejnych stron.

Czy istnieje sposób, aby to osiągnąć?

Zasadniczo chciałbym umieścić coś takiego app.get("/user", validation.user, user.index);

Odpowiedzi:

40 za odpowiedź nr 1

Oto jak definiujesz swoje trasy:

routes.js:

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

Oto jak definiujesz swoje middleware:

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)

Innym sposobem byłoby użycie oprogramowania pośredniego na trasę:

routes.js:

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

Mam nadzieję, że odpowiem na twoje pytania.


2 dla odpowiedzi nr 2

Możesz umieścić funkcje oprogramowania pośredniego w osobnym module w taki sam sposób, jak w przypadku funkcji kontrolera. To po prostu wyeksportowana funkcja z odpowiednim zestawem parametrów.

Więc jeśli miałeś validation.js plik, możesz dodać swoje user metoda walidacji jako:

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