1

我正在使用最新的 Ember Data 版本 1.0.0-beta。我正在尝试将对象添加到本地存储中的 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);" :

未捕获的类型错误:无法读取未定义的属性“typeKey”

我也尝试使用 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 属性中。当我检查 localstorage 时,篮子中的名称属性已正确填写,但所选项目的数组为空。

据我了解, App.Model.store.find 返回一个承诺,而 App.Model.store.filter().objectAt(0) 返回对象本身。

知道我在这里做错了什么吗?任何帮助是极大的赞赏。非常感谢!

4

1 回答 1

1

我解决这个问题的方法是将我的 ember 数据更改为在线版本。我使用的是 ember 数据的下载版本(9 月 13 日下载)。但是在过去的十天里,对 ember-data js 库进行了几次编辑。我猜这个错误最初是由于以前版本中的错误而出现的。在我更新到最新在线版本的 ember 数据后,hasMany 关系现在正在更新。

仅供参考:我正在使用 App.Model.store.filter(..).objectAt(0) 的第一种方法来获取对象并将其设置为 hasMany 关系。

于 2013-09-23T20:26:52.467 回答