2016-04-04 14 views
1

Ich versuche, Datensatz mit zugeordneten Datensätzen in einer Anfrage zu erstellen. Falls einige der verschachtelten Datensätze Validierungsfehler aufweisen, möchte ich auf entsprechende Fehler in diesem Datensatz zugreifen. Ich benutze JSON-API-Adapter, was sollte das Format von Fehlern aus dem Backend sein? Ich bin so etwas wie dies versucht, mit allerdings kein Glück: https://github.com/emberjs/data/blob/master/addon/adapters/errors.js#L7Ember-Daten: Validierungsfehler bei Beziehungen (hasMany)

Irgendwelche Ideen:

{"errors":[ 
    { 
    "detail": "can't be blank", 
    "source": { 
     "pointer":"data/relationships/steps/0/data/attributes/est_threshold" 
    } 
    } 
]} 

zu dieser Linie Nach sollte es irgendwie umgesetzt werden?

Antwort

0

Sie müssen verschachtelte Datensätze in den Daten seitenweise laden. Die Struktur Beispiel in den Ember Führungen gegeben ist:

{ 
    "post": { 
    "id": 1, 
    "title": "Node is not omakase", 
    "comments": [1, 2, 3] 
    }, 

    "comments": [{ 
    "id": 1, 
    "body": "But is it _lightweight_ omakase?" 
    }, 
    { 
    "id": 2, 
    "body": "I for one welcome our new omakase overlords" 
    }, 
    { 
    "id": 3, 
    "body": "Put me on the fast track to a delicious dinner" 
    }] 
} 

https://guides.emberjs.com/v1.10.0/models/the-rest-adapter/

+0

Die Frage war über Validierungsfehler, nicht die Daten zu laden. Und ich benutze JSON-API-Adapter, wie in der Frage ausdrücklich gesagt. –

+0

Oh, Entschuldigung, ich hätte es besser lesen sollen. Könnte es sein, dass der von Ihnen gepostete JSON ungültig ist? Sieht so aus, als ob eine enge eckige Klammer fehlt. – TheCompiler

+0

Oh, es ist das Problem der Formatierung. Als ich es in einer Zeile geschrieben habe, habe ich es zur besseren Lesbarkeit umformatiert. So kommt es vom Server mit einer eckigen Klammer. –

0

So ist es noch nicht implementiert zu sein scheint. Ich fand irgendwie hackish Art und Weise, dass im Modell mixin zu tun:

`import Ember from 'ember'` 

RelatedErrors = Ember.Mixin.create 

    save: -> 
    @_super().catch (resp) => 
     resp.errors.forEach (err) => 
     if [_, rel, idx, attr] = err.source.pointer.match /^data\/relationships\/(\w+)\/(\d+)\/data\/attributes\/(\w+)$/ 
      @get(rel).objectAt(idx).get('errors').add(attr, err.detail) 

`export default RelatedErrors` 

jedoch add auf DS.Errors veraltet ist, so ist dies noch keine perfekte Lösung. Auch der ungültige Zustand verwandter Modelle muss vor jedem Commit gelöscht werden, was bisher nicht geschieht.