7.10 Models -- Handling Metadata(处理元数据)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.10 Models -- Handling Metadata(处理元数据)相关的知识,希望对你有一定的参考价值。
1. 随着从store中返回的records,你可能需要处理一些元数据。Metadata是伴随着特定model或者tyep的一种数据,而不是record。
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可以被用于计算有多少页。
以上是关于7.10 Models -- Handling Metadata(处理元数据)的主要内容,如果未能解决你的问题,请参考以下文章