【问题标题】:Express Middleware running multiple times during MongoDB query在 MongoDB 查询期间多次运行 Express 中间件
【发布时间】:2015-08-26 08:59:01
【问题描述】:

我正在运行以下路线来检索项目列表。

app.get('/test', function(request, response){
    Project.find({}, function(err, projects) {
      if (err) throw err;
       response.render(__dirname + '/app/test', projects);
    });
});

一切正常,但我注意到当我添加这个中间件时:

app.use(function(req, res, next){
    console.log('Things!');
    next();
});

我记录了 “Things!” 7 次(查询返回的结果数量)。

中间件是否意味着不针对每个结果运行。我觉得我做错了什么。我还在学习 Node 和 Express 并努力改掉坏习惯...

干杯

【问题讨论】:

  • /app/test 的内容是什么。中间件可能会访问所有 http 请求。
  • 这是一个 html 文件,每个循环都有一个把手,列出了每个项目
  • 你的每个循环中是否有http请求?
  • 不。只是 html 和 handlebars 元素。很快就会发布。
  • 你是对的。这是因为http请求。这是因为样式表和 javascript 文件请求。我错误地认为它只执行了车把部分。谢谢。

标签: javascript node.js mongodb express


【解决方案1】:
app.use(function(req, res, next){
    console.log(req.url);
    next();
});

如上所述更改您的中间件并检查输出。它有助于调试。将输出添加到问题中。

【讨论】:

  • 非常感谢。这出现了一堆http请求。 /stylesheets/main.css 等这是一件坏事吗?我试过让它们直接引用文件,但它仍然会发生。如果中间件对每个引用都执行,那肯定不是很好......
  • 基本上,你是对的。您不希望 Node 为不需要此类逻辑的请求(即静态文件)执行中间件。在生产中,您应该运行 nginx 或类似的东西来处理静态文件,以使 node/express 不必处理这些请求。见blog.argteam.com/coding/…
猜你喜欢
  • 2017-01-22
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多