Comments (10)
Nice addition! I just solved a similar problem with a composite key just by adding a virtual field to an objection.js model. But having it in the serializer is good approach, too.
from json-api-serializer.
Not supported yet... nobody is working on it.
PR is welcome !
from json-api-serializer.
I also notice I could have a _id
column that just does loads this format before sending it in. What do you think?
from json-api-serializer.
@chamini2, Interesting addition 👍
json-api-serializer already does a lot of transformations on data, so why not on id
.
PR is welcome !
Thanks
from json-api-serializer.
Hey, @danivek, I was thinking about this and one thing that worries me is how the deserialize
would work?
from json-api-serializer.
@chamini2 You're right, deserialize
needs to have an utility function to unconvertId
. It could be also useful even if id
is defined as a key for id on data.
E.g. if id on input data is an int
, to be spec compliant, json-api-serialiser
serialize id with toString()
.
Serializer.register('article', {
id: '_id',
}
});
const jsonapi_payload = Serializer.serialize('article', {'_id': 123 });
jsonapi_payload = {
"jsonapi": {
"version": "1.0"
},
"data": {
"type": "article",
"id": "123" // serialized with toString()
}
}
But when we deserialize it, it's not possible actually to convert it back to int
.
Serializer.deserialize('article', jsonapi_payload);
{
"_id": "123"
}
So, adding a function to unconvertId is not surprising.
from json-api-serializer.
Ok, what about:
Serializer.register('coment', {
id: {
serialize(attributes) { return `${attributes.user_id},${attributes.article_id}`; },
deserialize(id) {
const [user_id, article_id] = id.split(',');
return { user_id, article_id };
}
}
})
Or could be
Serializer.register('coment', {
id: {
serialize(attributes) { return `${attributes.user_id},${attributes.article_id}`; },
deserialize(id, attributes) {
const [user_id, article_id] = id.split(',');
attributes.user_id = user_id;
attributes.article_id = article_id;
return attributes;
}
}
})
I'm not sure which is better and why. I would really like your input and think about it well before making a decision.
from json-api-serializer.
Something like this is fine for me:
Serializer.register('coment', {
id: {
serialize(data) { // data looks like {"user_id": "1", "article_id": "2", ... }
return `${data.user_id},${data.article_id}`; // should return a string
},
deserialize(data) { // data looks like {"type": "coment", "id": "1,2", attributes: { ... }}
const [user_id, article_id] = data.id.split(',');
return { user_id, article_id }; // Should return an object wich will be assign to deserialized data
}
}
})
from json-api-serializer.
Cool!
from json-api-serializer.
Is this feature supported? When I tried the above, I am getting the following error:
"ValidationError: child "id" fails because ["id" must be a string]"
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.