Loading hasMany from within primary type


#1

I’m running into an error trying to load data for a hasMany relationship using a fairly customized serializer. The error is occurring in deserializeRecordId because my related objects are all defined inline instead of sideloaded. Here’s my setup:

I have the following model:

App.ThingHistory = DS.Model.extend({
  things: DS.hasMany("thing")
});

I have a legacy endpoint that is giving me a very non-standard response. I’m using a ThingHistorySerializer (extending JSONSerializer) and converting it into the following JSON in the normalize callback:

[{
  id: 1982348903, // timestamp
  things: [{
    id: "1982348903_1",
    historicalValue1: 92,
    historicalValue2: 43
    //...
  }//, ...]
}]

I know with RESTSerializer I can do something like:

{
  "thing-history": [{
     "id": 1982348903,
     "things": ["1982348903_1", "1982348903_2"/*, ... */]
   }/*, ...*/],
   "things": [{/*...*/}]
};

But I’m trying to keep the translation from one format to the other as straightforward as possible and I think this would be more work. I can’t figure out what I need to override in order to make the structure I have work. Can anyone give me any pointers on figuring this out?


#2

This topic looks like a candidate for a stack overflow question. Seems to me that if you are using Ember Data it would be a good idea to use sideloading (compound document, see jsonapi.org) if you’re server won’t then you’ll need to work it out in your custom serializer, see https://github.com/emberjs/data/blob/master/TRANSITION.md#rest-adapter-and-serializer-configuration