Snapshot Class
Constructor
Snapshot
-
internalModel
Parameters:
-
internalModel
ModelThe model to create a snapshot from
Item Index
Methods
Properties
Methods
attr
-
keyName
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.
Parameters:
-
keyName
String
Returns:
The attribute value or undefined
attributes
()
Object
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' }
Returns:
All attributes of the current snapshot
belongsTo
-
keyName
-
[options]
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.
Parameters:
-
keyName
String -
[options]
Object optional
Returns:
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.
changedAttributes
()
Object
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!'] }
Returns:
All changed attributes of the current snapshot
eachAttribute
-
callback
-
[binding]
Iterates through all the attributes of the model, calling the passed function on each attribute.
Example
snapshot.eachAttribute(function(name, meta) {
// ...
});
Parameters:
-
callback
Functionthe callback to execute
-
[binding]
Object optionalthe value to which the callback's
this
should be bound
eachRelationship
-
callback
-
[binding]
Iterates through all the relationships of the model, calling the passed function on each relationship.
Example
snapshot.eachRelationship(function(name, relationship) {
// ...
});
Parameters:
-
callback
Functionthe callback to execute
-
[binding]
Object optionalthe value to which the callback's
this
should be bound
hasMany
-
keyName
-
[options]
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.
Parameters:
-
keyName
String -
[options]
Object optional
Returns:
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.
serialize
-
options
Serializes the snapshot using the serializer for the model.
Example
import Adapter from '@ember-data/adapter';
export default Adapter.extend({
createRecord(store, type, snapshot) {
var data = snapshot.serialize({ includeId: true });
var url = /${type.modelName}
;
return fetch(url, {
method: 'POST',
body: data,
}).then((response) => response.json())
}
});
Parameters:
-
options
Object
Returns:
an object whose values are primitive JSON values only
Properties
adapterOptions
Object
A hash of adapter options
id
String
The id of the snapshot's underlying record
Example
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' });
postSnapshot.id; // => '1'
record
Model
The underlying record for this snapshot. Can be used to access methods and properties defined on the record.
Example
let json = snapshot.record.toJSON();