Ember:async有很多关系问题

时间:2014-11-17 14:57:50

标签: ember.js has-many

我迷失在Ember的数据承诺中并且拥有更多的关系。这就是我所拥有的:

tarifs和预留都在应用程序启动时加载(成功):

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return Em.RSVP.hash({
      tarifs: this.store.find('tarif'),
      reservations: this.store.find('reservation')
    });
  }
});

然后,tarifsreservations被限制为spectacles

App.SpectaclesRoute = Ember.Route.extend({
  isLoaded:false,

  model: function() {
      if(this.isLoaded) {
          return this.store.all('spectacle');
      }

      this.isLoaded = true;
      return this.store.find('spectacle');
    }
});
服务器返回

Spectacles,其中包含representations ID数组和tarifs ID数组。 Representations个对象在同一个响应中返回,如下所示。由于第一次通话,Tarifs已经在商店里了。

以下是Spectacle模型:

App.Spectacle = DS.Model.extend({
  titre: DS.attr('string'),
  sousTitre: DS.attr('string'),
  visuelUrl: DS.attr('string'),
  tarifs: DS.hasMany('tarif', { async: true }),
  representations: DS.hasMany('representation', { async: true })
});

问题是:从我看到的内容(使用ember浏览器插件),spectaclestarifs没有关联(spectaclesrepresentations都是)。我能找到的唯一区别是它们是在两个独立的服务器调用中加载的,但它不应该是一个问题,对吧?

我认为这可能是异步/承诺问题。从表现来看,我的需要是获得第一个奇观。简而言之:myRepresentation.spectacle.tarifs [0]。我尝试了各种各样的东西,比如:

representation.get('spectacle.tarifs').then(function(tarifs) {
  var tarif = tarifs.get('firstObject');
  console.log(tarif);
}

什么都不起作用:tarif始终为空。似乎已加载所有记录,但spectacletarifs之间的关系不是。

我做错了吗?

1 个答案:

答案 0 :(得分:0)

好的,忘记了,问题出在tarif模型中:

App.Tarif = DS.Model.extend({
  nom: DS.attr('string'),
  montant: DS.attr('number'),
  spectacle: DS.belongsTo('spectacle', { async: true })
});

“belongsTo”关系是一个错误,因为tarif可以链接到许多spectacles。我刚删除了这一行,现在一切都很好。