2014-10-11 70 views
3

尝试使用具有hasMany关系的LocalStorage适配器(使用Ember CLI)保存记录时,遇到了一个棘手的问题。我想要做的是当用户点击“添加到购物袋”按钮时将产品保存到购物袋中。我得到这个错误在我的控制台:尝试保存时,无法读取属性'determineRelationshipType'具有hasMany关系的模型

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

我遇到同样的问题,但尚未找到解决方案。 Emberfire的这个问题可能是相关的:https://github.com/firebase/emberfire/issues/123 – Caqu 2014-10-11 17:30:27

回答

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", 
    } 
} 

此错误不再出现!

2

我使用emberfire适配器启动了一个项目,并遇到了同样的问题。

不用深入研究,它看起来像ember-data beta.10已弃用hasMany工作所必需的功能。 (Further reading https://github.com/firebase/emberfire/issues/123

降级到ember-data beta.8为我解决了这个问题。

这是必要的,直到适配器(emberfire和/或localstorage)可以更新。

在我的余烬,CLI的项目,我做的事:

rm -rf vendor/ember-data/ bower cache clean ember-data 编辑文件vendor/emberfire/bower.jsonvendor/emberfire/.bower.json"ember-data": "1.0.0-beta.8"

bower install

+0

我降级到Ember Beta.8,问题得到解决。感谢你的回答。我希望在Ember数据的未来版本中解决此问题。 – 2014-10-12 19:07:33

+0

对此有任何更新?我试着再次尝试升级以再次实现数据beta.10,并且发生了同样的问题。现在,我回到了8,但很想能够在某个时候升级 – 2014-11-17 07:01:55

+0

我的最终没有更新。您可能希望向LocalStorage Adapter和Ember Data维护人员或两者提交一个错误报告。 – Caqu 2014-11-18 18:13:09

相关问题