Возвращает общее количество строк в запросе данных ember `find` или `findAll`

Мне нужно знать, сколько всего существует строк определенного ресурса (App.User).

Я попытался вернуть его в ответ, но Ember жалуется на несопоставленные свойства и ожидает только массив записей (users: [ "john", "fred"]). Я не хочу делать дополнительный запрос к серверу.

Есть ли какой-нибудь чистый способ добиться этого с помощью Ember?


person korCZis    schedule 25.09.2012    source источник


Ответы (3)


Вам не нужно делать дополнительный запрос к серверу. Как только вы получаете данные в хранилище данных с сервера, они остаются там, если какая-либо запись не является грязной, и вы запускаете store.commit

Итак, после того, как вы получите свои записи, сказав

users = App.User.find()

вы можете просто сделать users.get('length'), и вы получите длину. При этом дополнительный запрос к серверу не генерируется.

person inertia    schedule 03.10.2012

Если вы хотите, чтобы это было в шаблоне руля, вы можете сделать {{this.length}}.

person Robin Clowers    schedule 28.07.2014

Я решил эту проблему, внедрив 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

person demee    schedule 10.09.2017