2017-09-28 47 views
1

我設置了一個簡單的Ember Twiddle向您展示我嘗試更新模型時發生的錯誤。 我使用ember-cli-mirage來模擬數據是相當可觀的。 根據文檔,我創建了一個應該處理PUT請求的速記路由。 確實如此,但與錯誤:Your handler for the url /api/shops/1 threw an error: Cannot convert undefined or null to object如果使用RestSerializer,不可能使用速記路由處理程序? (ember-cli-mirage)

當使用JSONAPISerializer,一切工作以速記(mirage/config.js),我能夠把款式更新,但在我的情況下,我必須使用RESTSerializer與序列化的ID答覆。 當我送模型的attrs是沒有Id在屬性名的末尾,FE請求負載:

// attrs object in PUT request { name: "Shop 1", city: "1" // belongsTo relationship, }

現在幻影正在試圖尋找到具有相應的數據庫模型的屬性更新,但無法找到它,因爲在數據庫中它是cityId而不僅僅是city ...

我也發現這個issue report,它的工作,但我希望我可以避免這樣的事情。據我記得,在以前版本的ember-cli-mirage(v0.1.x)中,也不需要重寫序列化程序中的標準化方法,以便能夠使用具有serializedIds的RestSerializer ...

我的問題是: 有沒有一種方法來堅持速記路由處理程序,還是我真的必須編寫一個助手或其他自定義解決方案,因爲我必須使用RestSerializer? 這真的很傷心,但至少我會知道的。

感謝您的支持!

+0

我不知道答案,但你可能想要注意你想使用的海市蜃樓的版本。 – AlexMA

+0

我想使用包含工廠支持和自動模型檢測的版本。但是,當我嘗試包含這兩個功能的第一個版本時,它的行爲也與我上面描述的類似。 –

回答

0

簡短回答:看起來您現在需要自定義序列化程序,直到它的錯誤修復被合併爲止。

很長的答案:該問題看起來是在Mirage的0.2 - > 0.3升級中發生的問題,可能是因爲Mirage中發生了潛在的數據庫更改。它可能會被修復,但現在你需要解決它。

相關問題