node.js - 如何在 Node.js/Express.js 中将中间件放入它自己的文件中

标签 node.js express middleware

我是整个 Node.js 的新手,所以我仍在尝试了解事物是如何“连接”的。

我正在尝试使用 express-form验证。根据你可以做的文档

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); 的内容,我可以将 Controller 代码放在单独的文件中。我想对验证中间件做同样的事情(或将验证代码放在 Controller 中),以便在我开始添加更多页面后更容易查看 App.js 文件。

有没有办法做到这一点?

基本上我想放类似 app.get('/user', validation.user, user.index);

最佳答案

这是您定义路线的方式:

routes.js:

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

这是您定义中间件的方式:

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)

另一种方法是使用您的中间件每条路线:

routes.js:

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

希望我能回答你的问题。

关于node.js - 如何在 Node.js/Express.js 中将中间件放入它自己的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14958296/

相关文章:

web-applications - `alice` 未调用中间件

javascript - IBMCloudCodeHybrid SDK 在 Android 上始终会出现 onFailure

node.js - passport.authenticate 中的 req 对象

node.js - 构建 Angular 项目导致堆内存不足

node.js - Node ejs forEach 导致 'Content Security Policy' 错误

c# - 如何在 HostingStartup 中注册中间件?

go - GO中不同的路径如何使用不同的中间件?

node.js 和 ncp 模块 - 无法复制单个文件

express - Peerjs 在 localhost 上工作但不在 heroku 上工作?

angularjs - 使用 expressjs 时下载的 .pdf 文件已损坏