2013-02-22 55 views
2

Sideloading在我們的應用程序中處理hasMany關係,但我無法讓它爲belongsTo關係工作。我試圖使用記錄的DS.RESTAdapter.configure()方法,但這似乎沒有任何效果。我得到的錯誤是Uncaught Error: assertion failed: Your server returned a hash with the key occasions but you have no mapping for it將Ember.js RC1中的belongsTo數據加載到ember-data

請注意,我們不需要指定hasMany sideload映射,因爲該請求正常工作。 App.Occasion.find();工作正常。 App.Reminder.find();引發錯誤。

模型

App.Reminder = DS.Model.extend(
    occasion: DS.belongsTo('App.Occasion') 
    ... 
) 
App.Occasion = DS.Model.extend(Ember.Validations, 
    reminders: DS.hasMany('App.Reminder') 
    ... 
) 

Store.js.coffee

DS.RESTAdapter.configure('App.Occasion', 
    sideLoadAs: 'occasions' 
) 
App.Store = DS.Store.extend(
    revision: 11 
    adapter: DS.RESTAdapter.create() 
) 

JSON(適用場合)

{ 
    reminders: [{},...], 
    occasions: [{reminders: [1,2,...]},...] 
} 

JSON(用於提醒)

{ 
    reminders: [{occasion_id: 1},...], 
    occasions: [{},...] 
} 
+0

作爲解決方法,我正在加載'hasMany'關係並嵌入'belongsTo'關係。我們的應用程序有兩個主屏幕,可以提供不同的數據視圖,因此,在找到真正的解決方案之前,這不應該是性能問題。 – dignoe 2013-02-22 04:38:05

回答

6

嘗試sideloadAs而不是sideLoadAs(不是大寫L

+0

哈哈。數字會是愚蠢的。謝謝泰迪。 – dignoe 2013-02-24 22:16:19