0
votes

I have a model called ticket-stats, defined as follows:

import Model from 'ember-data/model';
import attr from 'ember-data/attr';

export default Model.extend({

    opened24Hours: attr('number'),
    miRelated: attr('number'),
    autoClosed24Hours: attr('number'),
    inQueue: attr('number'),
    activeGreater48: attr('number'),
    behindNct: attr('number'),
    manuallyClosed24Hours: attr('number'),
    handoff: attr('number')

});

The data for this comes from a service which yields the following JSON:

{
  "get_tickets": {
     "behind_nct": {
        "inequality": null,
        "stat_name": "Behind NCT",
        "value": 0,
        "update_time": "2016-05-26 18:05:11",
        "threshold": null
      },
      ...
   }
}

I have a custom serializer for this model:

import JSONSerializer from 'ember-data/serializers/json';

export default JSONSerializer.extend({

    normalizeResponse(store, primaryModelClass, payload, id, requestType) {
        console.log(payload);
        var data = {};
        data.id = 1;
        data.opened24Hours = payload.get_tickets.tickets_opened_last_24_hours.value;
        data.miRelated = payload.get_tickets.mi_related_tickets.value;
        data.autoClosed24Hours = payload.get_tickets.tickets_closed_goliath_last_24_hour.value;
        data.inQueue = payload.get_tickets.tickets_in_queue.value;
        data.activeGreater48 = payload.get_tickets.active_greater_48.value;
        data.behindNct = payload.get_tickets.behind_nct.value;
        data.manuallyClosed24Hours = payload.get_tickets.tickets_closed_last_24_hours.value;
        data.handoff = payload.get_tickets.handoff_tickets.value;

        return this._super(store, primaryModelClass, data, id, requestType);
    }

});

The values for the attributes of my model are all null. When i look at the payload on the console, I see that the innermost objects (i.e. behind_nct) don't contain the correct attributes:

behind_nct: Object
  __proto__: Object
  __defineGetter__    :    __defineGetter__()
  __defineSetter__    :    __defineSetter__()
  __lookupGetter__    :    __lookupGetter__()
  __lookupSetter__    :    __lookupSetter__()
  constructor    :    Object()
  hasOwnProperty    :    hasOwnProperty()
  isPrototypeOf    :    isPrototypeOf()
  propertyIsEnumerable    :    propertyIsEnumerable()
  toLocaleString    :    toLocaleString()
  toString    :    toString()
  valueOf    :    valueOf()
  get __proto__    :    get __proto__()
  set __proto__    :    set __proto__()

Is there something wrong with the JSON api or with my configuration of the Ember model? Or both?

When i go to the URL for the json, everything seems fine. I can see all the data.

1

1 Answers

0
votes

You need to form a correct JSON API payload from your server's response:

let ticks= payload.get_tickets;
let data= {
    ticket_stats: [{
        opened24Hours: ticks.tickets_opened_last_24_hours.value,
        // etc. etc. 
    }]
};

You need to identify the model type ticket_stats in the payload.