eachRelationship (callback, binding)
Given a callback, iterates over each of the relationships in the model, invoking the callback with the name of each relationship and its relationship descriptor.
The callback method you provide should have the following signature (all parameters are optional):
function(name, descriptor);
-
namethe name of the current property in the iteration -
descriptorthe meta object that describes this relationship
The relationship descriptor argument is an object with the following properties.
-
key
Stringthe name of this relationship on the Model -
kind
String"hasMany" or "belongsTo" -
options
Objectthe original options hash passed when the relationship was declared -
parentType
DS.Modelthe type of the Model that owns this relationship -
type
Stringthe type name of the related Model
Note that in addition to a callback, you can also pass an optional target object that will be set as this on the context.
Example
app/serializers/application.jsimport DS from 'ember-data';
export default DS.JSONSerializer.extend({
serialize: function(record, options) {
var json = {};
record.eachRelationship(function(name, descriptor) {
if (descriptor.kind === 'hasMany') {
var serializedHasManyName = name.toUpperCase() + '_IDS';
json[serializedHasManyName] = record.get(name).mapBy('id');
}
});
return json;
}
});
Parameters:
-
callback
Function - the callback to invoke
-
binding
Any - the value to which the callback's `this` should be bound
Please login to continue.