2013-01-14 71 views
1

我使用RestifyMongoose創建API,而我對這兩者都是全新的。我似乎無法弄清楚在Mongoose/Node中處理錯誤的正確方法。在Mongoose中處理錯誤

截至目前,我試圖做這樣的事情:

Submission.findById(req.params.submission_id, function(err, data) { 

    if (err) 
     return next(err); 

    res.send(data); 

}); 

我試圖呼籲這個GET(對於不存在的用戶)。而不是發回簡單的錯誤消息,它會導致我的整個節點應用程序失敗。我對下一次返回(err)的用戶以及確切應該做什麼感到困惑。

任何幫助,非常感謝。

回答

4

一個findById查詢沒有找到匹配不在貓鼬級別的錯誤,所以你如果你想治療這種方式,你必須做你自己:

Submission.findById(req.params.submission_id, function(err, data) { 

    if (err) 
     return next(err); 
    else if (!data) 
     return next(new Error("User not found")); 

    res.send(data); 

}); 
+0

謝謝你,我認爲這是我正在尋找的。任何關於設置狀態代碼(404)的想法都是這樣的? –

+0

@NickParsons這似乎相當沉重。我認爲在返回的JSON中有一個200狀態碼和一些指示更好。但這取決於您的應用程序的需求。 – JohnnyHK

+0

@NickParsons使用Restify,您可以使用buit-in錯誤發送404錯誤。 語法如下: return next(new ResourceNotFoundError('User not found')); 更多信息在這裏:http://mcavage.github.io/node-restify/#Error-handling 希望它有幫助。 –