2016-05-26 1 views
0

Ich habe ein Modell Ticket-Statistik genannt, wie folgt definiert:Ember-Daten: eingebettete Objekte in JSON Daten verloren

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') 

}); 

Die Daten für diese von einem Dienst kommt, die die folgende JSON ergibt:

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

ich habe eine benutzerdefinierte Serializer für dieses Modell:

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); 
    } 

}); 

die Werte für die Eigenschaften meines Modells ar e alles null. Wenn ich auf der Konsole an der Nutzlast anschaue, sehe ich, dass die innerste Objekte (zB behind_nct) nicht die richtigen Attribute enthalten:

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__() 

Gibt es etwas falsch mit dem JSON api oder mit meiner Konfiguration des Ember Modell? Oder beides?

Wenn ich auf die URL für die JSON gehe, scheint alles in Ordnung. Ich kann alle Daten sehen.

Antwort

0

Sie müssen von Ihrem Server-Antwort eine korrekte JSON API Nutzlast bilden:

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

Sie benötigen die Modelltyp ticket_stats in der Nutzlast zu identifizieren.