2016-10-04 1 views
1

Ich habe ein Problem, wo eine optionale AngleTo Beziehung nicht richtig zum Speichern geschoben wird. In meiner Ember-Anwendung habe ich eine Beziehung zwischen zwei Modellen, die optional ist. Stellen Sie sich zum Beispiel vor:Optional belongsTo Beziehung nicht zum Speichern

App.User = DS.Model.extend({ 
    profile: DS.hasMany('profile', {'async': true}) 
}); 

App.Profile = DS.Model.extend({ 
    user: DS.belongsTo('user', {'async': true}) 
}); 

wo das Feld "Benutzer" im "Profil" -Modell leer sein kann. Wenn es leer ist, sollte der Serialisierer

.... 
relationships: { 
    user: null 
} 
... 

in der normalisierten Nutzlast zurück, zumindest, wenn ich den JSON-API-Standard ausgelegt habe (JSON-API resource linkage) korrekt. Das Problem ist, dass dies nicht in den Laden geschoben wird. Ich kann dieses Problem reproduzieren, indem

  1. einen „Profil“ Datensatz aus Backend mit Beziehung „user“ Laden
  2. Ändern des „user“ Wert auf der Client-Seite für diesen bestimmten Datensatz zu einem Nicht-null auf null gesetzt
  3. Wert
  4. Nachladen den Datensatz aus dem Backend

Nach diesen Schritten das Feld „Benutzer“ auf dem „Profil“ Rekord hält noch immer seine fehlerhaften, nicht-null-Wert.

Ist das erwartete Verhalten oder ein Fehler? Wenn dies das erwartete Verhalten ist, wie sollte ich diese Änderungen verfolgen, um die Datenintegrität zu erhalten?

Antwort

0

Nach einem zweiten Blick auf die JSON-API scheint es, ich habe es falsch interpretiert. Die normalisierte Nutzlast sollte stattdessen

... 
relationships: { 
    user: { 
    data: null 
    } 
} 
... 

sein, die es für mich löste.

Verwandte Themen