En En

Обработка метаданных


Вместе с записями, возвращенными из хранилища, вам, скорее всего, придется обрабатывать некоторые метаданные. Метаданные — данные, которые сопровождаются конкретной моделью или типом, а не записью.

Пагинация — распространенный пример использования метаданных. Представьте блог, в котором больше публикаций, чем вы можете отобразить за один раз. Можно сделать запрос к нему таким образом:

let result = this.get('store').query('post', {
  limit: 10,
  offset: 0
});

Чтобы получать разные страницы с данными, следует просто изменить сдвиг (offset) на шаг 10. Пока все хорошо. Но как узнать, сколько всего у вас страниц с данными? Серверу нужно вернуть общее количество записей в качестве части метаданных.

Каждый сериализатор по-разному ожидает возвращения метаданных. Например, десериализатор JSON в Ember Data ищет ключ meta:

{
  "post": {
    "id": 1,
    "title": "Progressive Enhancement is Dead",
    "comments": ["1", "2"],
    "links": {
      "user": "/people/tomdale"
    },
    // ...
  },

  "meta": {
    "total": 100
  }
}

Несмотря на использованный сериализатор, эти метаданные извлекаются из ответа. Затем вы можете считать их с помощью .get('meta').

Это можно сделать в результате вызова store.query():

store.query('post').then((result) => {
  let meta = result.get('meta');
})

В связи belongsTo:

let post = store.peekRecord('post', 1);

post.get('author').then((author) => {
  let meta = author.get('meta');
});

Или связи hasMany:

let post = store.peekRecord('post', 1);

post.get('comments').then((comments) => {
  let meta = comments.get('meta');
});

После считывания можно использовать meta.total, чтобы вычислить, сколько у вас страниц с публикациями.

Чтобы настроить извлечение метаданных, проверьте документацию по сериализатору.


Комментарии (0)

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.