ngx-jsonapi
ngx-jsonapi copied to clipboard
Resource: "hasOneRelated" check failed after calling "removeRelationship" and saved
Angular Version:
8.1.3
ngx-jsonapi Version:
2.1.15
npm Version:
6.14.6
Typescript Version:
3.4.5
OS:
Windows 10
Given:
foo is the only possible relationship (One related)
The service follows the JSON api specs, i.e. if no related foo, then there won't be relationships key on the Resource
Calling the GET service with include: ['foo']
Steps:
- Load the resource with GET (doesn't matter with or without the related
foo) - Update the resource, call
removeRelationship('foo') - Save the resource with
.save(), it will POST to the service - Load the same resource again with GET and check
hasOneRelated
Issue:
TypeError: Cannot read property 'type' of null at Ln.hasOneRelated ...
Analysis:
- The
foowas initialized as an empty Resource the first time, if there is norelationshipskey returned from the service - After the removal & save, the local Resource was updated and
relationships.foo.datawould becomenull - Since
hasOneRelatedchecks...relationships[resource].data).type, it will throw NullPointer exception
Suggestion:
add a condition in hasOneRelated, i.e.
public hasOneRelated(resource: string): boolean {
return Boolean(
this.relationships[resource] &&
------> this.relationships[resource].data &&
(<Resource>this.relationships[resource].data).type &&
(<Resource>this.relationships[resource].data).type !== ''
);
}