2017-11-09 4 views
0

Ich habe ein Modell, lassen Sie uns house nennen, und eine andere, kitchen. Wenn ich versuche, das Modell house zu speichern, werden seine Beziehungen belongsTo() zu kitchen zerstört.Ember.js: Speichern eines Datensatzes zerstört gehört zu Beziehungen

house hat eine belongsTo() Beziehungen zu kitchen, wie folgt aus:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    kitchen: DS.belongsTo('kitchen', {polymorphic:true}), 
}); 

kitchen ist ein sehr einfaches Modell:

export default DS.Model.extend({ 
name: DS.attr('string') 
}); 

ich meinen Rekord erschaffe, es füllt und schließlich in eine rettende Komponente. Dies ist die Funktion, die damit verbunden ist.

createHouse() { 
    this.createKitchen().then(() => { // this will create, fill and save a kitchen record 
      this.createAnSetHouse(); // this will create and fill a house record as 'house' 
      console.log(this.get('house').get('kitchen')); // this properly get the kitchen record 
      this.get('house').save().then(() => { 
       console.log(this.get('house').get('kitchen')); // and here the relationships is set to null ??? 
     /* rest of the function */
    } 

Wie Sie oben in den Schnipsel sehen können, einmal, ich spare den jhouse Datensatz werden die Beziehungen auf null, auch wenn es richtig vorher festgelegt wurde.

EDIT

Ich sollte erwähnt haben, ist dies die Nutzlast, die mein Server erhalten:
"content": { "attributes": { "kitchen_id": null, "name": "myName" } }

Irgendwelche Tipps geschätzt wird.

FINAL EDIT

ich herausgefunden, wie es zu lösen, war ich in createKitchen, einige seltsame Dinge mit meinem Versprechen zu tun hatte ich eine Ember.RSVP.defer() die resolve() auch wenn der kitchen Rekord war noch nicht gespeichert ..
Die obigen Snippets sollten für die meisten von Ihnen funktionieren, wenn Sie nicht einige seltsame Dinge mit Versprechen machen.

Antwort

0

Als eine Vermutung, ich glaube, Ihre API Antwort auf

this.get ('Haus'). Speichern()

ein Paket ohne die Küche Beziehung ist, die dann Überschreibungen das lokale Modell.

Wenn Sie sich die Antwort in Ihrer Entwicklerkonsole ansehen, was sehen Sie?

Auch: Ich sehe nicht, dass die Küche in diesem Code beibehalten wird, es sei denn, Ihre API besteht implizit beibehalten, wenn Sie das Haus speichern.

+0

Ich sollte erwähnt haben, ist dies die Nutzlast, die mein Server erhalten: ' "Inhalt": { "Attribute": { "kitchen_id": null, "name": "myName" } } ' – maje

+0

Ich benutze einen Adapter, der die" Küche "ID abrufen, und dann nur die ID drücken, das Backend wird damit umgehen. – maje

+0

Für die Konsole gibt der erste Aufruf zurück: 'content: Class {__ember1510241294711:" ember1457 ", store: Klasse, _internalModel: InternalModel, currentState: {...}, ...},' und der zweite Aufruf: 'content: null'. – maje

Verwandte Themen