7.10 Models--Handling Metadata(メタデータの処理)

1943 ワード

1.storeから返されるrecordsに従って、メタデータを処理する必要がある場合があります.Metadataは、recordではなく、特定のmodelまたはtyepを伴うデータである.
2.ページングはメタデータを使用する一般的な例です.ブログに一度に表示できるより多くのpostsがあることを想像してください.このように問い合わせるかもしれません.
let result = this.store.query("post", {
  limit: 10,
  offset: 0
});

3.異なるページのデータを得るために、offsetを10に簡単に変更することができます.ここまで、万事順調です.しかし、あなたが何ページのデータを持っているか知っていますか?サーバは、メタデータの一部としてrecordsの合計数を返す必要があります.
4.各シーケンス化は、異なるメタデータを返すことを望む.たとえば、Ember DataのJSON逆シーケンス化器はmetaキーを検索します.
{
  "post": {
    "id": 1,
    "title": "Progressive Enhancement is Dead",
    "comments": ["1", "2"],
    "links": {
      "user": "/people/tomdale"
    },
    // ...
  },

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

5.どのようなシーケンサを使用しても、このメタデータは応答から抽出されます.使用することができますget('meta')で読み込みます.
6.storeを呼び出すことができます.query()の結果で完了します.
store.query('post').then((result) => {
  let meta = result.get('meta');
})

7.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');
});

8.それを読み取る後、meta.totalは、何ページあるかを計算するために使用できます.