我使用的是最新的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);“:
未捕获的TypeError:无法读取未定义的属性'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时,正确填写了basket中的name属性,但所选Items的数组为空。
根据我的理解,App.Model.store.find返回一个promise和一个App.Model.store.filter()。objectAt(0)返回该对象本身。
知道我在这里做错了吗?任何帮助是极大的赞赏。非常感谢!
答案 0 :(得分:1)
我解决这个问题的方法是将我的余烬数据更改为online version。我使用的是下载版本的ember数据(9月13日下载)。但是在过去的十天里,对ember-data js库进行了几次编辑。我猜测错误最初是由于以前版本中的错误而经历的。在我更新到最新的在线版本的ember数据后,hasMany关系现在正在更新。
仅供参考:我使用App.Model.store.filter(..)。objectAt(0)的第一个方法来获取对象并将其设置为hasMany关系。