2013-09-23 47 views
1

我使用的是最新的灰燼數據版本1.0.0-β。我正在嘗試將對象添加到本地存儲中的hasMany關係,但遇到了一些問題。如何將記錄添加到灰燼型號的的hasMany屬性?

我有兩個型號:

App.Item = DS.Model.extend({ 
    description: DS.attr('string'), 
}); 

App.Basket = DS.Model.extend({ 
    selectedItems: DS.hasMany('item'), 
    name: DS.attr('string'), 

}) 

我稱之爲「Items_descriptions」包含描述字符串數組的數組。 。 我嘗試使用以下方式將項目插入一個籃子:

var basket_record = App.Basket.store.createRecord('basket', { name: 'Test_record' }); 

var itemsarray = []; 

Items_descriptions.forEach(function(description){ 

    var item = App.Item.store.filter('item', function(record){return record.get('description') == description}).objectAt(0); 
    itemsarray.push(item); 
}); 

basket_record.get('selectedItems').pushObjects(itemsarray); // ***errors out here**** 

basket_record.save(); 

不過,我得到以下錯誤在這行basket_record.get( 'selectedItems')pushObjects(itemsarray);」:

Uncaught TypeError: Cannot read property 'typeKey' of undefined

我也嘗試使用App.Model.store.find方法,但是也並不工作:

var basket_record = App.Basket.store.createRecord('basket', { name: 'Test_record' }); 
var itemsarray = []; 

Items_descriptions.forEach(function(description){ 

    App.Item.store.find('item', {'description': description}).then(function(item){ 

     itemsarray.push(item); 
    }); 
}); 
basket_record.get('selectedItems').pushObjects(itemsarray); 

basket_record.save(); 

的App.Mode.store.find方法的作品,但它不列入添加數據成功進入selectedItems屬性。當我檢查本地存儲時,籃子中的名稱屬性被正確填寫,但所選項目的數組爲空。

從我的理解,App.Model.store.find返回一個承諾和一個App.Model.store.filter()。objectAt(0)返回對象本身。

任何想法我在做什麼錯在這裏?任何幫助是極大的讚賞。非常感謝!

回答

1

我解決了這個被我燼數據更改爲online version的方式。我使用的是下載的燼數據版本(9月13日下載)。但是在過去的十天裏,已經對燼數據庫進行了一些編輯。我猜測這個錯誤最初是由於之前版本中的錯誤而經歷的。在更新到最新的在線版本的ember數據後,hasMany關係現在正在更新。我正在使用App.Model.store.filter(..)。objectAt(0)的第一個方法來獲取對象並將其設置爲hasMany關係。