Ember:路线中的链式请求:模型

时间:2015-08-12 16:34:45

标签: ember.js

我希望在我的路线中加载多个数据。例如,用户和他的视频。

网址如下所示:/user/fooUsername

但是要加载视频,我想使用用户的ID进行查询,所以我必须等待第一个承诺才能实现。

我的代码如下所示:

export default Ember.Route.extend({
    model: function(params) {
        var username = params.user_username;

        var user = this.store.filter('user', {filters: {"username":username}}, function(item) {
            return (item.get('username') === username);
        }).then(function(results) {
            return results.get('content')[0];
        });

        var userID = user.id;

        var videos = this.store.filter('videos', {filters: {"creator":userID}}, function(item) {
          return (item.get('creator.id') === userID);
        });


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

在此配置中,userID为空。

有一种简单的方法吗?我尝试使用afterModelbeforeModelsetupController失败了。

编辑:我仍然面临这个问题,无法解决问题。我该怎么办?

1 个答案:

答案 0 :(得分:1)

我想你想首先找到用户,然后找到他的视频。它可能看起来像这样

store.find("user", params.id).then(function(result) {
  var promises;
  promises = {
    user: result,
    videos: store.findQuery("video", {
      video_id: result.get('id')
    })
  };
  return Ember.RSVP.hash(promises);
});

这里我们通过id找到一个用户。一旦我们找到该用户,我们就会找到他们的视频并将其退回。