2017-07-14 38 views
0

我有一個典型的場景。 我的模型鉤Route-1看起來像這樣。當燼模型掛鉤的請求失敗時會發生什麼

model() { 
    return Ember.RSVP.hash({ 
    posts: this.store.findAll('post'), 
    authors: this.store.findAll('author') 
    }); 
} 

如果我在Route-2並導航到Route-1它會調用model鉤。 如果我的商店已經有數據,則兩個findAll請求都已解析,觸發RSVP.hash來解決。

但是,如果申請失敗,我得到我的控制檯(鉻)undefined錯誤。(兩次,每次的findAll的) 我的錯誤跟蹤系統,報告爲Unhandled promise error detected

棧表明沒有相關的信息要麼

defaultDispatch @ ember.debug.js:18008 
dispatchError @ ember.debug.js:17987 
onerrorDefault @ ember.debug.js:31634 
trigger @ ember.debug.js:58713 
(anonymous) @ ember.debug.js:59614 
invokeWithOnError @ ember.debug.js:346 
flush @ ember.debug.js:405 
flush @ ember.debug.js:529 
end @ ember.debug.js:599 
(anonymous) @ ember.debug.js:1165 

我無法弄清楚是什麼原因造成的錯誤被拋出,因爲承諾findAll已經得到了解決。而餘燼告訴我,我沒有履行諾言!

我試着每次都把catch/reject代碼放進去,但它永遠不會被調用。因爲這個承諾當然已經解決了。所以,它不能被拒絕。

那麼這個錯誤來自哪裏!我沒有任何線索。在適配器返回之前沒有錯誤。

我唯一能找到的就是我的序列化程序normalizeFindAllResponse在發生這種故障時不會被調用。

任何幫助,非常感謝。謝謝!

+0

您可能需要查找用於加載'post'和'author'模型以查找潛在錯誤的adpater和serializer。堆棧跟蹤錯誤是否有任何可擴展選項?因爲它沒有提供任何線索 – kumkanillam

+0

我檢查了它。沒有錯誤。適配器只是發送它所得到的(在這種情況下拒絕了'reason')。序列化程序從未被調用過。 –

+0

至於堆棧跟蹤,它是'ember's'代碼,它只是調用錯誤。沒有相關信息,我可以擔保。 –

回答

0

我以某種方式解決了這個問題。

之前,在我的適配器中,我拒絕Promis'reason對象的承諾。 現在,如果出現錯誤響應,我寧可發送一個包含errors數組的對象,而不是失敗原因對象。 因此,該對象將作爲有效負載傳遞到串行器中的我的normalizeFindAllResponse。在那裏我檢查我們的​​參數中是否存在errors陣列。 如果有這樣的對象,那麼只需返回一個空對象data屬性設置爲空數組。

注意:從here得到了主意。

相關問題