Ember Data的store爲檢索一個類型的records提供一個接口。數組
1、Retrieving a single record(檢索單記錄)promise
1. 經過type和ID使用store.findRecord()去檢索一條record。這將返回一個promise,它經過請求的record來實現:網絡
var post = this.store.findRecord('post', 1); // => GET /posts/1
2. 經過type和ID使用store.peekRecord()去檢索一條record,沒有產生網絡請求。只有當它已經在sotre中存在時,這將返回這條record。app
var post = this.store.peekRecord('post', 1); // => no network request
2、Retrieving mutiple records異步
1. 對於一個給定的type,使用store.findAll()來檢索全部的records。ide
var posts = this.store.findAll('post'); // => GET /posts
2. 對於一個給定的type,使用store.peekAll()來檢索全部的records,這些records已經被加載到store中,不會產生網絡請求:post
var posts = this.store.peekAll('post'); // => no network request
3、Querying for multiple recordsui
Ember Data提供了查詢知足某些條件的記錄的能力。調用store.query()將得到一個GET請求,並將傳遞的對象序列化爲查詢參數。這個方法和find方法同樣返回DS.PromiseArray。this
例如,咱們能夠查詢全部的名字爲Peter的pserson models:spa
var peters = this.store.query('person', { name: 'Peter' }); // => GET to /persons?name=Peter
4、Integrating with the route's model hook
1. 就像在 Specifying a Route's Model中討論的同樣,routes負責告訴它們的模板加載哪個model。
2. Ember.Route的model hook支持開箱即用的異步的值。若是你從model hook中返回一個promise,這個路由器將會等待直到這個promise完成渲染模板。
3. 使用Ember Data使得它很容易使用異步數據編寫apps。僅僅從model hook中返回請求的record,而且讓Ember處理是否須要網絡請求。
app/router.js
var Router = Ember.Router.extend({}); Router.map(function() { this.route('posts'); this.route('post', { path: ':post_id' }); }); export default Router;
app/routes/posts.js
export default Ember.Route.extend({ model() { return this.store.findAll('post'); } });
app/routes/post.js
export default Ember.Route.extend({ model(params) { return this.store.findRecord('post', params.post_id); } })