返回ember数据`find`或`findAll`请求中的总行数

时间:2012-09-25 18:58:02

标签: json rest ember.js ember-data

我需要知道特定资源(App.User)的总行数。

我试图回复它,但是Ember抱怨没有映射属性,并且只期望记录数组(users: [ "john", "fred"])。我不想对服务器进行额外的查询。

Ember有没有干净的方法来实现这个目标?

3 个答案:

答案 0 :(得分:4)

您无需向服务器进行其他查询。从服务器获取数据存储区中的数据后,除非某些记录变脏且运行store.commit

,否则它将保留在那里

所以,在你通过说

得到你的记录之后
users = App.User.find()

你可以简单地users.get('length')来获得长度。执行此操作时,不会生成对服务器的其他查询。

答案 1 :(得分:4)

如果您想在把手模板中使用此功能,可以执行{{this.length}}

答案 2 :(得分:0)

我已经通过在我的适配器中实现handleResponse并以Ember期望的方式修改响应来解决了这个问题。

假设我从服务器得到类似的响应:

{
  "count": 203,
  "users": {...} //user data conforming to model 
} 

我的handleResponse实现如下:

handleResponse (status, headers, payload, requestData) {
  let parsedPayload = {
    users: payload.users,
    meta: {
      total: payload.count
    }
  };
  return this._super(status, headers, parsedPayload, requestData);
}

然后我可以Ember documentation specifies it

的方式获取模型元数据