Ember Octane is here! A lot has changed since Ember 3.14, including these Guides. Read more in the Ember Blog.

Old Guides - You are viewing the guides for Ember v2.6.0. VIEW v3.15.0
Edit Page

Finding Records

The Ember Data store provides an interface for retrieving records of a single type.

Retrieving a Single Record

Use store.findRecord() to retrieve a record by its type and ID. This will return a promise that fulfills with the requested record:

var blogPost = this.get('store').findRecord('blog-post', 1); // => GET /blog-posts/1

Use store.peekRecord() to retrieve a record by its type and ID, without making a network request. This will return the record only if it is already present in the store:

var blogPost = this.get('store').peekRecord('blog-post', 1); // => no network request

Retrieving Multiple Records

Use store.findAll() to retrieve all of the records for a given type:

var blogPosts = this.get('store').findAll('blog-post'); // => GET /blog-posts

Use store.peekAll() to retrieve all of the records for a given type that are already loaded into the store, without making a network request:

var blogPosts = this.get('store').peekAll('blog-post'); // => no network request

store.findAll() returns a DS.PromiseArray that fulfills to a DS.RecordArray and store.peekAll directly returns a DS.RecordArray.

It's important to note that DS.RecordArray is not a JavaScript array. It is an object that implements Ember.Enumerable. This is important because, for example, if you want to retrieve records by index, the [] notation will not work--you'll have to use objectAt(index) instead.

Querying for Multiple Records

Ember Data provides the ability to query for records that meet certain criteria. Calling store.query() will make a GET request with the passed object serialized as query params. This method returns a DS.PromiseArray in the same way as findAll.

For example, we could search for all person models who have the name of Peter:

// GET to /persons?filter[name]=Peter
this.get('store').query('person', {
  filter: {
    name: 'Peter'
}).then(function(peters) {
  // Do something with `peters`

Querying for A Single Record

If you know your query will return only one result Ember Data provides a convenience method that will return a promise that resolves with a single record. Calling store.queryRecord() will make a GET request with the passed object serialized as query params.

For example, if we know that an email uniquely identifies a person, we could search for a person model that has an email address of tomster@example.com:

// GET to /persons?filter[email]=tomster@example.com
this.get('store').queryRecord('person', {
  filter: {
    email: 'tomster@example.com'
}).then(function(tomster) {
  // do something with `tomster`