2016-03-30 4 views
0

Ich bin ziemlich neu in EmberJS und leider habe ich mit JSON beschäftigen, die nicht eine Wurzel oder ids enthält und ich kann nicht scheinen keine klaren Weg zu finden, was zu tun I versuche ich zu tun, das ist nur um die Antwort zu bereinigen.Ember - wie aufzuräumen JSON Antwort

Ich gehe davon aus, dass ich einen ember Serializer zu verwenden, dies zu tun.

Dies ist, was ich zur Zeit aus meiner api/locations:

[ 
    { 
    "uri": "/location/1", 
    "name": "ATLANTA" 
    }, 
    { 
    "uri": "/location/2", 
    "name": "NORTH VIRGINIA" 
    } 
] 

Ich gehe davon aus, dass ich es brauche stattdessen so aussehen, mit einer Wurzel und ids:

{ 
    "locations":[ 
    { 
     "id":"1", 
     "uri":"/location/1", 
     "name":"ATLANTA" 
    }, 
    { 
     "id":"2", 
     "uri":"/location/2", 
     "name":"NORTH VIRGINIA" 
    } 
    ] 
} 

Ich habe ein JSONSerializer unter app/serializers/location.js

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    // how can I manufacture an id here, say with index 
    // how to I assign it to a root called "locations" 
}); 

Nur durch die Aufnahme dieser JSONSer ializer Ich bekomme einen Eintrag im Laden, aber es ist nur einer und ich nehme an, das liegt daran, dass sie keine IDs haben, sonst würden beide Einträge angezeigt werden.

only one record and no id

Ich brauche Hilfe und Beispiele dafür, wie diese Daten beginnen massieren. Die Beispiele, die ich versucht habe, haben nichts bewirkt.

+0

Dies sollte helfen: http://www.codeandtechno.com/code/2015/7/5/transforming-json-payload-to-include-object-root-with-restadapter-in-embers – Gregg

+0

Dies wird erklären Was Sie brauchen: http://emberigniter.com/fit-any-backend-into-ember-custom-adapters-serializers/ – emberigniter

+0

Dank fellas, codeandtechno verweist veraltete oder umbenannte Methoden als die Version, mit der ich arbeite. Diese Lösung ist auch etwas schwierig für mich zu folgen. Und ich bin auf Emberigniter gestoßen, die einige Tipps geben, wie ich das vielleicht machen könnte, aber das sieht nach 2.0 aus und ich arbeite mit 1.13. Das ist das andere Thema, das ich immer wieder getroffen habe, verschiedene Versionen des Frameworks, die dich verrückt machen werden! – pjdicke

Antwort

1

Es scheint, dass JSONSerializer das von mir erwähnte Root-Problem behebt, aber ich konnte mein ID-Problem lösen, indem ich mit den verfügbaren Methoden auf dem Serializer experimentierte, bis ich auf etwas stieß, das funktionierte. Meine letzte Lösung sieht wie folgt aus:

export default DS.JSONSerializer.extend({ 

    normalize: function(typeClass, hash) { 
     hash['id'] = parseFloat(hash.uri.match(/\d+/g)) 
     return this._super.apply(this, arguments); 
    } 

}); 

Einfach genug, aber WOW, ich konnte nicht ein einziges Beispiel finden, das zeigte, wie so etwas zu tun.