Ember Daten und das mapping von JSON Objekten
Ich habe wirklich gesucht und ich nicht gefunden haben, eine anständige Beispiel für die Verwendung der Serialisierung um Objekte aus einer anders formatierten JSON-Antwort. Mein Grund für die nicht zu ändern das format der JSON-Antwort ist hier skizzierten http://flask.pocoo.org/docs/security/#json-security.
Ich bin nicht sehr gut mit javascript, aber ich hatte eine harte Zeit zu verstehen, dass die Haken in die serialize_json.js oder vielleicht sollte ich mit mapping (ich weiß nur nicht). Also hier ist ein Beispiel meiner JSON-Antwort für viele Objekte:
{
"total_pages": 1,
"objects": [
{
"is_completed": true,
"id": 1,
"title": "I need to eat"
},
{
"is_completed": false,
"id": 2,
"title": "Hey does this work"
},
{
"is_completed": false,
"id": 3,
"title": "Go to sleep"
},
],
"num_results": 3,
"page": 1
}
Wenn ember-data versucht diese zu verwenden, bekomme ich die folgende Fehlermeldung:
DEBUG: -------------------------------
DEBUG: Ember.VERSION : 1.0.0-rc.1
DEBUG: Handlebars.VERSION : 1.0.0-rc.3
DEBUG: jQuery.VERSION : 1.9.1
DEBUG: -------------------------------
Uncaught Error: assertion failed: Your server returned a hash with the key total_pages but you have no mapping for it
Die macht Total, wenn man sieht mein code für die Daten speichern:
Todos.Store = DS.Store.extend({
revision: 12,
adapter: DS.RESTAdapter.create({
mappings: {objects: "Todos.Todo"},
namespace: 'api'
})
});
Meine Frage ist, wie gehe ich mit total_pages
, num_results
und page
? Und durch viel, ich meine zu ignorieren, so kann ich nur die Karte objects
array.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle root-Eigenschaften, die Sie zurück in Ihre JSON-Ergebnis zugeordnet, DS.Modell in Ember Data. Sollten Sie nicht zurückgeben-Eigenschaften, die nicht modelliert oder sollten Sie Modell Ihnen.
Wenn Sie wollen, um loszuwerden, die Fehler, sollten Sie ein leeres Modell für die Eigenschaften, die Sie nicht verwenden.
Lesen Sie mehr hier
Warum sind Sie zurückgeben-Eigenschaften, die Sie nicht verwenden möchten? Oder ist es aus Ihrer Kontrolle?
_id
(und_ids
) Eigenschaften interpretiert werden als Fremdschlüssel auf andere Objekte. Wenn Siepost_id: 10
Ember sieht für einPost
mitid
10.Die Art und Weise, dies zu erreichen ist durch eine benutzerdefinierte serializer. Wenn alle Ihre Daten vom server zurückgegeben werden, die in diesem format können Sie einfach erstellen
ApplicationSerializer
wie diese:Sollte es Ember Daten zu verbrauchen-API nahtlos.
Ember ist eine ziemlich Feste Meinung über wie Dinge getan werden. Ember Daten ist keine Ausnahme. Die Ember team arbeitet auf bestimmte standards, die denkt, dass es am besten ist, das ist, meiner Meinung nach, eine gute Sache.
Check-out dieser Beitrag auf, wo ember wird. TL;DR, weil es so viele unterschiedliche Implementierungen der api-Aufrufe, Sie sind einstellen, Ihre Anstrengungen zur Unterstützung der JSON API.
Aus meinem Verständnis, es gibt keinen einfachen Weg, das zu tun, was Sie Fragen. Ihre beste Wette ist, um schreiben Sie Ihre eigenen benutzerdefinierten adapter und serialisiert. Dies sollte nicht zu schwer zu tun, und getan wurde, vor. Ich empfehle Ihnen, einen Blick auf die Tastypie adapter verwendet für Python-Django Tastypie