无法读取属性" determineRelationshipType'当尝试使用hasMany关系保存()模型时

时间:2014-10-11 00:09:34

标签: ember.js ember-cli

尝试使用具有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。非常感谢任何帮助!提前谢谢。

2 个答案:

答案 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.jsonvendor/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",
  }
}

此错误不再出现!