2015-08-26 54 views
4

我正在運行下面的路由來檢索項目列表。在MongoDB查詢期間運行多次的快速中間件

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

我登錄 7次(查詢返回的結果數量)。

中間件是不是爲每個結果運行。我覺得我做錯了什麼。我還在學習節點,快速,並試圖不拿起壞習慣......

乾杯

+0

你的'/ app/test'的內容是什麼?中間件可能訪問所有http請求。 – BlackMamba

+0

這是一個帶有句柄的HTML文件,每個循環列出了每個項目 – themollusk

+1

在每個循環中是否有http請求? – BlackMamba

回答

3
app.use(function(req, res, next){ 
    console.log(req.url); 
    next(); 
}); 

更改您的中間件如上所述,並且檢查輸出。它有助於調試。將輸出添加到問題中。

+1

非常感謝。這變成了一堆http請求。 /stylesheets/main.css等 這是一件壞事嗎?我試圖讓它們直接引用文件,但它仍然發生。當然,如果中間件爲每個參考執行都不是很好...... – themollusk

+1

本質上,你是正確的。您不希望節點在不需要此類邏輯的情況下執行您的中間件(即靜態文件)。在生產中,您應該運行nginx或類似的東西來照顧提供靜態文件,從而使節點/表達式不必爲這些請求提供服務。見http://blog.argteam.com/coding/hardening-node-js-for-production-part-2-using-nginx-to-avoid-node-js-load/ –