Class Snapshot
publicSnapshot is not directly instantiable. Instances are provided to a consuming application's adapters and serializers for certain requests.
attr (keyName) Object public
Defined in ../packages/store/addon/-private/network/snapshot.ts:182
- keyName
- String
- returns
- Object
- The attribute value or undefined
Returns the value of an attribute.
Example
1 2 3 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postSnapshot.attr('author'); // => 'Tomster' postSnapshot.attr('title'); // => 'Ember.js rocks' |
Note: Values are loaded eagerly and cached when the snapshot is created.
attributes Object public
Defined in ../packages/store/addon/-private/network/snapshot.ts:207
- returns
- Object
- All attributes of the current snapshot
Returns all attributes and their corresponding values.
Example
1 2 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postSnapshot.attributes(); // => { author: 'Tomster', title: 'Ember.js rocks' } |
belongsTo (keyName, options) (Snapshot|String|null|undefined) public
Defined in ../packages/store/addon/-private/network/snapshot.ts:256
- keyName
- String
- options
- Object
- returns
- (Snapshot|String|null|undefined)
- A snapshot or ID of a known relationship or null if the relationship is known but unset. undefined will be returned if the contents of the relationship is unknown.
Returns the current value of a belongsTo relationship.
belongsTo
takes an optional hash of options as a second parameter,
currently supported options are:
id
: set totrue
if you only want the ID of the related record to be returned.
Example
1 2 3 4 5 6 7 |
// store.push('post', { id: 1, title: 'Hello World' }); // store.createRecord('comment', { body: 'Lorem ipsum', post: post }); commentSnapshot.belongsTo('post'); // => Snapshot commentSnapshot.belongsTo('post', { id: true }); // => '1' // store.push('comment', { id: 1, body: 'Lorem ipsum' }); commentSnapshot.belongsTo('post'); // => undefined |
Calling belongsTo
will return a new Snapshot as long as there's any known
data for the relationship available, such as an ID. If the relationship is
known but unset, belongsTo
will return null
. If the contents of the
relationship is unknown belongsTo
will return undefined
.
Note: Relationships are loaded lazily and cached upon first access.
changedAttributes Object public
Defined in ../packages/store/addon/-private/network/snapshot.ts:225
- returns
- Object
- All changed attributes of the current snapshot
Returns all changed attributes and their old and new values.
Example
1 2 3 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postModel.set('title', 'Ember.js rocks!'); postSnapshot.changedAttributes(); // => { title: ['Ember.js rocks', 'Ember.js rocks!'] } |
eachAttribute (callback, binding) public
Defined in ../packages/store/addon/-private/network/snapshot.ts:466
- callback
- Function
- the callback to execute
- binding
- Object
- the value to which the callback's `this` should be bound
Iterates through all the attributes of the model, calling the passed function on each attribute.
Example
1 2 3 |
snapshot.eachAttribute(function(name, meta) { // ... }); |
eachRelationship (callback, binding) public
Defined in ../packages/store/addon/-private/network/snapshot.ts:490
- callback
- Function
- the callback to execute
- binding
- Object
- the value to which the callback's `this` should be bound
Iterates through all the relationships of the model, calling the passed function on each relationship.
Example
1 2 3 |
snapshot.eachRelationship(function(name, relationship) { // ... }); |
hasMany (keyName, options) (Array|undefined) public
Defined in ../packages/store/addon/-private/network/snapshot.ts:363
- keyName
- String
- options
- Object
- returns
- (Array|undefined)
- An array of snapshots or IDs of a known relationship or an empty array if the relationship is known but unset. undefined will be returned if the contents of the relationship is unknown.
Returns the current value of a hasMany relationship.
hasMany
takes an optional hash of options as a second parameter,
currently supported options are:
ids
: set totrue
if you only want the IDs of the related records to be returned.
Example
1 2 3 4 5 6 |
// store.push('post', { id: 1, title: 'Hello World', comments: [2, 3] }); postSnapshot.hasMany('comments'); // => [Snapshot, Snapshot] postSnapshot.hasMany('comments', { ids: true }); // => ['2', '3'] // store.push('post', { id: 1, title: 'Hello World' }); postSnapshot.hasMany('comments'); // => undefined |
Note: Relationships are loaded lazily and cached upon first access.
serialize (options) Object public
Defined in ../packages/store/addon/-private/network/snapshot.ts:514
- options
- Object
- returns
- Object
- an object whose values are primitive JSON values only
Serializes the snapshot using the serializer for the model.
Example
app/adapters/application.js | |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import Adapter from '@ember-data/adapter'; export default Adapter.extend({ createRecord(store, type, snapshot) { let data = snapshot.serialize({ includeId: true }); let url = `/${type.modelName}`; return fetch(url, { method: 'POST', body: data, }).then((response) => response.json()) } }); |