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 ../store/addon/-private/system/snapshot.ts:199
- keyName
- String
- returns
- Object
The attribute value or undefined
Returns the value of an attribute.
Example
// 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 ../store/addon/-private/system/snapshot.ts:224
- returns
- Object
All attributes of the current snapshot
Returns all attributes and their corresponding values.
Example
// 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 ../store/addon/-private/system/snapshot.ts:273
- 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
// 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 ../store/addon/-private/system/snapshot.ts:242
- returns
- Object
All changed attributes of the current snapshot
Returns all changed attributes and their old and new values.
Example
// 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 ../store/addon/-private/system/snapshot.ts:476
- 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
snapshot.eachAttribute(function(name, meta) {
// ...
});
eachRelationship (callback, binding) public
Defined in ../store/addon/-private/system/snapshot.ts:505
- 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
snapshot.eachRelationship(function(name, relationship) {
// ...
});
hasMany (keyName, options) (Array|undefined) public
Defined in ../store/addon/-private/system/snapshot.ts:377
- 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
// 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 ../store/addon/-private/system/snapshot.ts:534
- options
- Object
- returns
- Object
an object whose values are primitive JSON values only
Serializes the snapshot using the serializer for the model.
Example
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())
}
});