获取错误:您需要将模型名称传递给商店的modelFor方法

时间:2016-06-20 16:42:28

标签: ember.js ember-data

使用Ember 2.6.0

定义以下路线:

Router.map(function() {
  this.route('brands');
  this.route('brand', {path: '/brands/:brand_id'});
});

brand的模型是:

export default Model.extend({
  name: attr('string'),
  description: attr('string'),
  dateCreated: attr('date'),
  lastUpdated: attr('date'),
  regions: hasMany('region')
});

region的模型是:

export default Model.extend({
  name: attr('string'),
  dateCreated: attr('date'),
  lastUpdated: attr('date'),
  brand: belongsTo('brand')
});

现在,在尝试访问/brands时,我正在路线中执行此操作:

export default Ember.Route.extend({
  model() {
    return this.store.findAll('brand');
  }
});

我收到以下错误:

  

您需要将模型名称传递给商店的modelFor方法

这在添加brand路由和region关系之前有效。品牌是父母,所以我不确定为什么这不起作用。

更新:

regions: hasMany('region')模型中删除brand可以让事情再次发挥作用。不确定为什么它没有使用已定义的关系。

1 个答案:

答案 0 :(得分:5)

事实证明我必须为每个对象创建序列化器。对于品牌我有:

import RESTSerializer from 'ember-data/serializers/rest';
import DS from 'ember-data';

export default RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
      regions: {embedded: 'always'}
  }
});

对于region我有:

import RESTSerializer from 'ember-data/serializers/rest';

export default RESTSerializer.extend({
});

从技术上讲,它可以在没有区域序列化器的情况下工作,但我收到警告,即ember无法在regions模型中找到region。我可以向ember提交一张票,建议不要创建一个空的RESTSerializer,以避免出现此警告。