2013-12-18 70 views
0

我已經用AngularJS構建了一個簡單的應用程序。這個應用程序的一部分是調用REST服務。爲此,我正在使用貓鼬。一切都很好,但我想更好地處理錯誤。示例代碼可能是:AngularJS Mongoose錯誤處理

快遞:

DBCollection.find({}, function (err, tuples) { 
      if (err) { 
       console.log('Error!'); 
      } 
      res.send(JSON.stringify(tuples)); 
     }); 

AngularJS:

DBService.query(function (res) { 
      $scope.data.lists = res; 
}); 

我面對的問題是如下。想象一下,我在mongodb服務器端出現錯誤。我有一個錯誤,所以我將它記錄在控制檯中,然後呢?在angularjs /前端方面會發生什麼?如果我將錯誤作爲http響應發送,那麼我認爲angular會將其解釋爲查詢的響應,但意外的內容會產生異常?如何處理?

回答

0

角度就像聖誕老人,它知道什麼時候迴應不好或好。有兩種解決方案,其中一種解決方案是在每個請求上創建一個錯誤處理程序。另一種方法是使用$httpProvider.interceptors在錯誤成爲單個請求級別上的問題之前全局處理錯誤。

選項1個

DBService.query(function (res) { 
    scope.data.lists = res; 
},function(errorResult){ 
    console.log(errorResult); // <- take a peek in here, find something useful 
}); 

選項2

$httpProvider.interceptors.push(['$q',function($q) { 
    return { 
     'responseError': function(rejection) { 
      console.log(rejection); // <- take a peek in here, find something useful 
      return $q.reject(rejection); 
     } 
    } 
}]); 
+1

我忘了,$資源下,它是$ http和承諾有兩種方法成功和錯誤。此外,我並不熟悉$ q,攔截器的情況更少...所以我會採用選項1.謝謝! – GuillaumeA