Fix handling relationships for V2 API

* we should look for both embedded relationship and relationship key,
  so in cases like for commit, when there's a full commit data on
  "commit" property, and only id at "commit_id", we will use commit data
* we can't add @type to V2 fallback, because in other places we chack
  for @type to distinguish V2 and V3 payloads
* there's no need to include a record in "included" if there's only a
  type and an id there
This commit is contained in:
Piotr Sarnacki 2015-11-11 14:57:22 +01:00
parent 34e53c1034
commit 39a579c9db

View File

@ -15,9 +15,9 @@ export default V3Serializer.extend({
let relationship = null;
let relationshipKey = this.keyForV2Relationship(key, relationshipMeta.kind, 'deserialize');
if (resourceHash.hasOwnProperty(relationshipKey)) {
if (resourceHash.hasOwnProperty(key) || resourceHash.hasOwnProperty(relationshipKey)) {
let data = null;
let relationshipHash = resourceHash[relationshipKey];
let relationshipHash = resourceHash[key] || resourceHash[relationshipKey];
if (relationshipMeta.kind === 'belongsTo') {
data = this.extractRelationship(relationshipMeta.type, relationshipHash);
} else if (relationshipMeta.kind === 'hasMany') {
@ -46,7 +46,6 @@ export default V3Serializer.extend({
resourceHash[key] = attributes[key];
};
resourceHash['@type'] = modelKey;
resourceHash['type'] = modelKey;
delete resourceHash[modelKey];
}
@ -61,6 +60,8 @@ export default V3Serializer.extend({
Object.keys(data.relationships).forEach(function (key) {
let relationship = data.relationships[key];
let process = function(data) {
if(Object.keys(data).sort()+'' !== 'id,type') {
// no need to add records if they have only id and type
let type = key.singularize();
let serializer = store.serializerFor(type);
let modelClass = store.modelFor(type);
@ -71,6 +72,7 @@ export default V3Serializer.extend({
included.push(item);
});
}
}
};
if(Array.isArray(relationship.data)) {