Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将中间件放入其中';在Node.js/Express.js中创建自己的文件_Node.js_Express_Middleware - Fatal编程技术网

如何将中间件放入其中';在Node.js/Express.js中创建自己的文件

如何将中间件放入其中';在Node.js/Express.js中创建自己的文件,node.js,express,middleware,Node.js,Express,Middleware,我对Node.js这个东西还不熟悉,所以我仍在尝试了解事物如何“连接” 我正在尝试使用验证。根据你能做的文件 app.post( '/user', // Route form( // Form filter and validation middleware filter("username").trim() ), // Express request-handler gets filtered and validated data function(req, re

我对Node.js这个东西还不熟悉,所以我仍在尝试了解事物如何“连接”

我正在尝试使用验证。根据你能做的文件

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

    }
  }
);
在App.js中。但是,如果我放置类似于
app.get('/user',user.index)的东西我可以将控制器代码放在单独的文件中。我希望对验证中间件也这样做(或者将验证代码放在控制器中),以便在我开始添加更多页面后更容易查看App.js文件

有没有办法做到这一点


基本上,我想放一些东西,比如
app.get('/user',validation.user,user.index)

您可以将中间件功能放入单独的模块中,方法与控制器功能完全相同。它只是一个带有适当参数集的导出函数

因此,如果您有一个
validation.js
文件,您可以将
用户
验证方法添加为:

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

这是您定义路线的方式:

routes.js:

module.exports = function(app){
    app.get("route1", function(req,res){...})
    app.get("route2", function(req,res){...})
}
module.exports = {
    formHandler: function(req, res, next){...}
}
// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

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

以下是您定义中间产品的方式:

middleware.js:

module.exports = function(app){
    app.get("route1", function(req,res){...})
    app.get("route2", function(req,res){...})
}
module.exports = {
    formHandler: function(req, res, next){...}
}
// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

// Initialize your routes:
require("routes")(app)
middlewares = require("middlewares")
module.exports = function(app){
    app.get("route1", middlewares.formHandler, function(req,res){...})
    app.get("route2", function(req,res){...})
}
app.js:

module.exports = function(app){
    app.get("route1", function(req,res){...})
    app.get("route2", function(req,res){...})
}
module.exports = {
    formHandler: function(req, res, next){...}
}
// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

// Initialize your routes:
require("routes")(app)
middlewares = require("middlewares")
module.exports = function(app){
    app.get("route1", middlewares.formHandler, function(req,res){...})
    app.get("route2", function(req,res){...})
}
另一种方法是按路径使用中间件

routes.js:

module.exports = function(app){
    app.get("route1", function(req,res){...})
    app.get("route2", function(req,res){...})
}
module.exports = {
    formHandler: function(req, res, next){...}
}
// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

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

希望我能回答您的问题。

这是我所追求的每路线方法。感谢您在此示例中的详细解释,app.js中的所有middleware.js是否只有一行代码可以应用?在学习node.js时,经过几天的努力,我对这个主题的回答/解释才有意义。令人惊讶。是的,“适当的参数集”是诀窍:)我还没有完全掌握导出/需求关系