尝试使用具有hasMany关系的LocalStorage Adapter保存记录时,我遇到了一个棘手的错误(使用Ember CLI)。我想要做的是当用户点击“添加到购物袋”按钮时将产品保存到包中。我在控制台中收到此错误:
Uncaught TypeError: Cannot read property 'determineRelationshipType' of undefined
产品型号:
import DS from 'ember-data';
export default DS.Model.extend({
...
bag: DS.belongsTo('bag')
});
行李型号:
import DS from 'ember-data';
export default DS.Model.extend({
products: DS.hasMany('product', {async: true})
});
以下是控制器中的操作:
import Ember from "ember";
export default Ember.ArrayController.extend({
actions: {
addToBag: function(model) {
var bag = this.store.createRecord('bag');
bag.get('products').then(function(products) {
products.pushObject(model);
bag.save();
});
}
}
});
有人会知道出了什么问题吗?或另一种方法来解决这个问题?似乎是一个类似的问题was reported here。非常感谢任何帮助!提前谢谢。
答案 0 :(得分:2)
我使用emberfire适配器启动了一个项目并遇到了同样的问题。
如果不深入研究,看起来像ember-data beta.10已弃用了hasMany工作所必需的功能。 (进一步阅读https://github.com/firebase/emberfire/issues/123)
降级为ember-data beta.8为我解决了这个问题。
在适配器(emberfire和/或localstorage)可以更新之前,这是必要的。
在我的ember-cli项目中,我做了:
rm -rf vendor/ember-data/
bower cache clean ember-data
编辑文件vendor/emberfire/bower.json
和vendor/emberfire/.bower.json
以说明"ember-data": "1.0.0-beta.8"
。
bower install
答案 1 :(得分:2)
我重新调查了这个问题,看起来它是在ember-localstorage-adapter
的最新更新中解决的。具体来说,reference to DS.RelationshipChange was removed。
在我的bower.json
中,我将ember-data
版本定义为1.0.0-beta.11
,并将我的ember-localstorage-adapter
版本定义为最新版本0.5.0
。这是bower.json
文件中的相关信息:
{
"name": "****",
"dependencies": {
"ember": "1.8.1",
"ember-data": "1.0.0-beta.11",
"ember-localstorage-adapter": "~0.5.0",
}
}
此错误不再出现!