Ember Data:使用API​​在详细信息端点上返回比列表端点更大的有效负载

时间:2014-06-03 14:02:18

标签: api ember.js ember-data

我正在使用Ember与Ember Data并使用REST API,该API仅在列表端点返回一小组属性,在详细信息端点返回完整有效负载。例如:

网址:/ api / users

{
    "users":[
        {"id":1,"name":"Bob"},
        {"id":2,"name":"Sam"}
    ]
}

网址:/ api / users / 1

{
    "user":{
        "id":1,
        "name": "Bob",
        "description": "Lorem ipsum dolor"
    }
}

注意/ api / users / 1如何返回比列表更多的属性。使用Ember Data,如果我的路由设置如下,如何在必要时获取完整的有效负载?

App.UsersRoute = Ember.Route.extend({
    model: function () {
        return this.store.find('user');
    }
});

App.UserRoute = Ember.Route.extend({
    model: function (params) {
        return this.store.find('user', params.user_id);
    }
});

问题在于这一行:

this.store.find('user', params.user_id)

如果列表已经加载,它不会从服务器请求完整的有效负载,因此调用商店的find方法会从缓存中返回具有有限属性的用户。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  var user = this.store.getById('user', params.user_id);
  if (user) {
    return user.reload();
  } else {
    return this.store.find('user', params.user_id);
  }

检查商店方法(getByIdhasRecordForIdrecordIsLoaded)和model reload