2016-04-04 17 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.

Verwandte Themen