2017-09-13 86 views
0

app.route('/ clientes')
.get(verificaAutenticacao,controller.listaClientes,controller.listaRegionais);獲取阻止其他請求的請求

當我這樣做時,只有1個控制器被稱爲什麼是錯的?

+2

可以給你更多關於你正在嘗試做什麼的背景 –

+0

那麼,我正在使用NodeJS,ExpressJS,MongoDB和Angular。 –

+0

我試圖做一條路線接收兩個中間件,但是當我打電話給他們時,只有一箇中間件被調用。 –

回答

0

我解決了問題...

我是Express,Angular和mongo的新手,所以在查找並搜索了一些邏輯之後,我找到了答案。

當我做一個route.get並傳遞中間件時,我需要創建一個新的路徑,它引用了該函數的中間件。

0

如果你在談論的是表達的NodeJS和你想多中間件添加到您應使用以下語法路線:

app.get('/example/b', function (req, res, next) { 
    console.log('the response will be sent by the next function ...') 
    next() 
}, function (req, res) { 
    res.send('Hello from B!') 
}) 
+0

我試圖做到這一點,但是當我做了我的錯誤:UnhandledPromiseRejectionWarning:未處理的承諾拒絕(拒絕ID:1):錯誤:發送後無法設置標題。 –

+0

controller.listaClientes = function(req,res,next) { var filtro = {}; Cliente.find(filtro) .exec() 。然後( 函數(listagem){ res.json(listagem); }, 函數(ERRO){ 的console.log(ERRO); RES .status(500).json(erro); } ); next() }; –

+0

所以首先代替第二個回調,然後在末尾執行.catch:.then(function(){...})。catch(function(){..}),然後您只能執行res。 json只有一次。如果你這樣做,res會被標記爲finalized,你將不能再次設置標題。我不知道爲什麼你有這麼多的中間件,但確保你只完成一次響應。你可以在這裏找到更多的信息https://stackoverflow.com/questions/7042340/error-cant-set-headers-after-they-are-sent-to-the-client –