2016-08-06 2 views
0

Also ich einen Frühling Stiefel api haben eine Reihe von Datensätzen in einer Liste zurückkehrt, wie folgt aus:Ember deserialisieren falsch Daten json

[ 
    { 
    "uid": 16587783, 
    "createdAt": 1391708660000, 
    "name": "FRaaS", 
    "fullName": "caarlos0/FRaaS", 
    "description": "Fake RT as a Service", 
    "homepage": "http://fraas.herokuapp.com/", 
    "owner": "caarlos0", 
    "organization": null, 
    "joined": false, 
    "private": false 
    }, 
    .... 
    more records 
] 

aber wenn ich versuche, es in der Vorlage zu lesen, bekomme ich folgende Fehler

WARNING: Encountered "0" in payload, but no model was found for model name "0" (resolved model name using [email protected]:-rest:.modelNameFromPayloadKey("0")) 

Hier ist mein aktueller Adapter

import DS from 'ember-data'; 
import Ember from 'ember'; 

export default DS.RESTAdapter.extend({ 
    host: 'http://127.0.0.1:8080/v1', 
    primaryKey: 'uid', 
    headers: Ember.computed('session.data.authenticated.currentUser.backendAccessToken', function() { 
    return { 
     "Auth-Token": this.get("session.data.authenticated.currentUser.backendAccessToken"), 
    }; 
    }) 
}); 

was kann ich in ember tun, damit es die Daten zu lesen, wie Ich sendete? Ich kann die API bei Bedarf ändern, aber ich möchte lieber nicht

+0

ist, dass die komplette (abgesehen von Wiederholung natürlich) Nutzlast/json Sie von Ihrem api bekommen? Wenn dies der Fall ist, müssen Sie am Anfang der Nutzlast einen Modellnamen hinzufügen. wie '{" modelNamePlural ": [{" uid ": 123456, ....}]}' – Jeff

+0

ja, das ist komplett ... Ich werde versuchen, den Modellnamen dann hinzuzufügen. danke –

Antwort

1

Sie müssen RESTSerializer verwenden. Und primaryKey ist für Serializer nicht Adapter. Ich denke, dass Sie json Serializer in Ihrer App verwenden.

UPDATE

hinzufügen unten auf Ihre Bewerbung Serializer

normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) { 
     let typeKey = primaryModelClass.modelName; 
     let ret = {}; 
     ret[typeKey] = payload; 
     return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, true); 
    }, 

    normalizeArrayResponse(store, primaryModelClass, payload, id, requestType) { 
     let pluralTypeKey = Ember.Inflector.inflector.pluralize(primaryModelClass.modelName); 
     let ret = {}; 
     ret[pluralTypeKey] = payload; 
     return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, false); 
    } 
+0

was muss ich im 'RESTSerializer' machen? Weil ich es bereits benutze, aber nichts ändert –

+0

Wirklich cool !, danke –

+0

Hey, ich weiß nicht, ob Sie helfen können, aber ich habe ein neues Problem, das mit der Serialisierung in Verbindung steht: http://stackoverflow.com/ Fragen/38816571/ember-kann-nicht-lesen-Beziehungen –