Ember.js中的同步数据调用

Mar*_*ins 3 javascript synchronization ember.js ember-data

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

  • 从服务器加载两个模型:一个review和一个user.
  • 我只能访问该reviewID,所以我需要先加载它,才能获得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
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

Kit*_*nde 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'));
      })
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

之所以用户undefined是因为它没有在你的第一个承诺分配,直到审查解决,但Ember.RSVP.hash已收到userundefined.