比方說,我有一個mongoose
調用來從數據庫中檢索一些文檔。我有兩種情況:如果回調中存在錯誤,我是否需要調用next()?
如果我要在數據庫中調用返回後執行
callback
功能,例如任何特定的行爲function(err, model) { if(err){ do some specific behavior in this case ??? } ...do something with the model. })
在這種情況下,我稱
next(err)
在???
或者我乾脆什麼都不做,要處理的錯誤會傳播到中間件?如果我不想在數據庫調用返回後執行
callback
函數中的任何特定行爲,例如,function(err, model) { ...do something with the model. })
所以如果發生錯誤,我只想讓我的中間件來處理它。我需要在這裏撥打
if (err) next(err)
嗎?
我以爲當一個錯誤拋出後,其餘的代碼不會執行。所以回調中的參數不是拋出的錯誤,只是數據庫返回的'Error'對象? – Pio
我想要處理中間件中的錯誤,我在這裏記錄錯誤並簡單地返回類似'express'缺省錯誤處理程序的錯誤頁面。 – Pio
不,如果你的調用有錯誤,而你以後嘗試用那個不存在的對象執行某些事情,你的應用就會崩潰 - 因爲你沒有處理那個錯誤。如果出現問題,中間件將重定向到錯誤頁面,這就是爲什麼您可以使用錯誤作爲第一個參數調用next()。然後表達/連接知道你在中間件有錯誤,他們可以顯示錯誤頁面。 – Zlatko