Ember.js中的同步数据调用

时间:2015-08-13 09:57:01

标签: javascript ember.js synchronization ember-data

我在访问评论/节目(/reviews/:id)时尝试执行以下操作:

  • 从服务器加载两个模型:一个review和一个user
  • 我只能访问review的ID,因此我需要先加载它,才能获得userId
  • 然后,当加载完成后我现在拥有userId时,请使用user
  • 中的userId属性查询review
  • 最后,在哈希中返回这两个,这样我就可以在模板中使用它们

所以两个同步数据库查询,然后在路由的model挂钩中一次返回它们。

我不介意它是否很慢,现在它足够快,我需要它才能现在

这是我尝试过的,它不起作用:

评论/ show.js

export default Ember.Route.extend({
  model: function(params) {
    var user;
    var review = this.store.findRecord('review', params.id).then(
      function(result) {
        user = this.store.findRecord('user', result.get('userId'));
      }
    );

    return Ember.RSVP.hash({
      review: review,
      user: user
    });
  }
});

1 个答案:

答案 0 :(得分:8)

你可以这样做:

export default Ember.Route.extend({
  model: function(params) {
    var reviewPromise = this.store.findRecord('review', params.id);
    return Ember.RSVP.hash({
      review: reviewPromise,
      user: reviewPromise.then(review => {
        return this.store.findRecord('user', review.get('userId'));
      })
    });
  }
});

用户undefined的原因是,在审核得到解决之前,您的第一个承诺尚未分配,但Ember.RSVP.hash已收到user undefined