Comments (7)
Hi @wesselvdv,
Thanks for your work.
This library has the responsability to serialize a data to be JSONAPI spec compliant, and to deserialize this JSONAPI payload back to original data.
E.g For this input data with 3 objects :
[{
id: '1',
body: 'test body 1',
}, {
id: '2',
body: 'test body 2',
}, {
id: '1',
body: 'test body 1',
additional: 'test additional 2',
}];
After serializing, you will have an array of 2 objects.
How can the library will convert it back to original data (with 3 objects) ?
from json-api-serializer.
The issue that I am facing is that those 3 objects are actually two objects. Where the objects that have the same id are the same entity, but one has more information loaded than the other. Hence the fact that I want them to be combined before they are sent off to the client.
I completely understand that this is a trivial example where one might easily correct that situation beforehand, but I have deeply nested objects with complex relations that are harder to recursively deduplicate, and/or merge.
I this case when converted back it puts it back together more efficiently than I originally created it.
from json-api-serializer.
If we add a transform option function to transform each record before the serialization on serializeData. Can that match your specific case ?
from json-api-serializer.
Hmm, that could work if the callback is provided type, id, and the obj itself. It would be awesome if we could also customize the deduplication function. Not sure if that oneβs running only running on included?
from json-api-serializer.
Just joining in to give another opinion to the mix:
I think this shouldn't be part of this library, but it should be done before or after the serialization. Checking every data item against each other for uniqueness by doing a deep-comparison does not scale well. It's already happening for included resources, which is necessary, since it's quite normal for nested data-relations to contain redundant data.
But your case seems to be a really rare edge-case. And since there's a workaround by merging duplicates in data
after or before the serialization, I wouldn't add this complexity and probably negative performance-impact to this library.
from json-api-serializer.
I agree with @Mattii, I was already not very convinced to add it for complexity reasons for a very specific need.
from json-api-serializer.
I did indeed do what you suggested. Funny thing is that for me incorporating this into api-serializer somehow is more efficient than iterating over the list afterwards. I do agree with both of you, my case is rather edgy.
Closing, :-).
from json-api-serializer.
Related Issues (20)
- ObjectID (mongodb) should be serialized with .toString() and not treated as an object HOT 2
- Support extracting error class names into the 'title' field of JSON API errors HOT 1
- Error when try to deserialise an included relationship with `alternativeKey` HOT 3
- ErrorMaximum call stack size exceeded if `included` has cross references
- Would you be interested in a conversion to Typescript? HOT 2
- Error instance serialization missing properties HOT 1
- ValidationError: beforeSerialize is not allowed HOT 2
- Incorrectly deserializing relationship when alternativeKey is set from default and relationship data is not in the included array HOT 2
- Case conversion breaks on non-alphanumeric strings
- Unintended object in attributes HOT 2
- Is there an option to remove undefined properties? HOT 1
- The result after serialize will not have `included` if the input doesn't have attributes HOT 5
- Error thrown when relationship is not registered HOT 5
- Having no attributes in the relation data does not add relation to included array
- Use a cache for converting to snake/camel/kebab case HOT 1
- bug: When installed in Angular project, it throws error since it is searching for `fs` HOT 3
- Relationships do not work with ES2015 classes
- bug: Duplicated models from includes are removed from response HOT 1
- Support serialization of only meta HOT 2
- Support for relationship data serialization? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json-api-serializer.