2014-06-05 66 views
3

如何從貓鼬查詢中捕獲錯誤。在我的路線我得到了這樣的事情:從快速查詢中捕獲錯誤

​​

,並在我的應用程序是我建立了我的路,我得到這個:

// app.js 
var router = require('./app/routes/routes'); 
// global-error handling middleware 
app.use(function(err, req, res, next) { 
    console.log('Some error is happening.'); 
    res.json(500, {status: 500, message: err.message}); 

}); 

如果我產生一個錯誤,所以我去行//( A)在我的代碼中,我得到一個堆棧跟蹤和node.js存在。我想在我的錯誤處理程序中發現錯誤。我該怎麼做呢?

回答

1

那麼,您已經在請求處理程序中,並且您已經可以訪問保存配置文件對象時產生的錯誤。所以,這裏沒有必要拋出異常。你可以已經處理這個問題。

這裏最可能的情況是向用戶發送一個響應,指示保存配置文件失敗。

function(req, res) { 
    profile.save(function(err) { 
     if (err) { // (A) 
     res.send(500, {message: 'Failed to save profile'} 
     } else { 
     res.json(200, { user_token: profile._id, username: profile.username }); 
     } 
    }); 
} 

就是這樣。您的客戶將收到一個500狀態錯誤,這顯然表示您的客戶需要處理的問題,例如通知用戶,執行重試等,等等等等。

+3

是的,這就是我所做的大部分工作時間。但是,如果mongo數據庫崩潰了,我不會進入函數(err){if(err){...它只是跳過整個profile.save(...)調用。即使數據庫關閉,我也想回應一個錯誤。 – Goran

+0

原來我錯過了'else',並且我的應用因爲'聽衆已經發送'錯誤而正在關閉,而不是因爲插入。 – George