Having no attributes in the relation data does not add relation to included array
AmauryD opened this issue · 0 comments
AmauryD commented
When the relationship's value only have an id key in their structure, the relation is in "relationships" but not in the "included" array.
The serializer code (simplified)
const serializer = new JSONAPISerializer({
});
this.serializer.register('user', {
whitelist: ['firstName', 'lastName'],
relationships: {
documents: {
type: 'document',
},
},
});
this.serializer.register('document', {
whitelist: ['filename', 'mimetype', 'originalName', 'path', 'size']
});
return this.serializer.serializeAsync(
'user',
{ id: '12345678910abcdef', documents: [ { id: '123456789' } ] },
extraData ?? ({} as any),
);
The API response
{
"jsonapi": {
"version": "1.0"
},
"links": {
"self": "/api/v1/users/12345678910abcdef"
},
"data": {
"type": "user",
"id": "12345678910abcdef",
"relationships": {
"documents": {
"data": [
{
"type": "document",
"id": "123456789"
}
]
}
},
"links": {
"self": "/api/v1/users/12345678910abcdef"
}
}
}
I think the correct output would be something like this :
{
"jsonapi": {
"version": "1.0"
},
"links": {
"self": "/api/v1/users/12345678910abcdef"
},
"data": {
"type": "user",
"id": "12345678910abcdef",
"relationships": {
"documents": {
"data": [
{
"type": "document",
"id": "123456789"
}
]
}
},
"links": {
"self": "/api/v1/users/12345678910abcdef"
}
}
"included": [
{
"type": "document",
"id": "123456789",
"attributes": {},
"links": {
"self": "/api/v1/documents/123456789"
}
}
]
}