Extends: | Ember.Service |
---|---|
Defined in: | addon/-private/system/store.js:135 |
Module: | ember-data |
The store contains all of the data for records loaded from the server. It is also responsible for creating instances of DS.Model
that wrap the individual data for a record, so that they can be bound to in your Handlebars templates.
Define your application's store like this:
import DS from 'ember-data'; export default DS.Store.extend({ });
Most Ember.js applications will only have a single DS.Store
that is automatically created by their Ember.Application
.
You can retrieve models from the store in several ways. To retrieve a record for a specific id, use DS.Store
's findRecord()
method:
store.findRecord('person', 123).then(function (person) { });
By default, the store will talk to your backend using a standard REST mechanism. You can customize how the store talks to your backend by specifying a custom adapter:
import DS from 'ember-data'; export default DS.Adapter.extend({ });
You can learn more about writing a custom adapter by reading the DS.Adapter
documentation.
The store provides multiple ways to create new record objects. They have some subtle differences in their use which are detailed below:
createRecord is used for creating new records on the client side. This will return a new record in the created.uncommitted
state. In order to persist this record to the backend you will need to call record.save()
.
push is used to notify Ember Data's store of new or updated records that exist in the backend. This will return a record in the loaded.saved
state. The primary use-case for store#push
is to notify Ember Data about record updates (full or partial) that happen outside of the normal adapter methods (for example SSE or Web Sockets).
pushPayload is a convenience wrapper for store#push
that will deserialize payloads if the Serializer implements a pushPayload
method.
Note: When creating a new record using any of the above methods Ember Data will update DS.RecordArray
s such as those returned by store#peekAll()
or store#findAll()
. This means any data bindings or computed properties that depend on the RecordArray will automatically be synced to include the new or updated record values.
© 2017 Yehuda Katz, Tom Dale and Ember.js contributors
Licensed under the MIT License.
https://emberjs.com/api/ember-data/2.14/classes/DS.Store