2016-05-22 5 views
3

Das Projekt an dem ich arbeite stützt sich stark auf many-to-many-Beziehungen, aber sie ist nicht in der Lage zu sehen, wie genau diese Ember Daten in Ember.js mit zu erreichen.Ember Data - Viele zu vielen Beziehungen?

Die Use-Case ich zur Zeit haben wird drei Modelle aus:

Person 
Address 
PersonAddress 

Die Verbindung zwischen der Person notwendig ist, für das, was ich gerade arbeite. Wäre es möglich, ein Beispiel dafür zu bekommen, wie dies erreicht werden könnte?

Antwort

3

Anscheinend versuchen Sie, die Viele-zu-Viele-Beziehung selbst zu verwalten, indem Sie das Zwischenmodell PersonAddress verwenden, von dem ich annehme, dass es eine einzelne Person mit einer einzigen Adresse verbindet. Diese

ist kein sehr guter Weg, um Dinge zu tun. Um eine Person, die Adressen zu finden, Sie gehen zu müssen manuell alle Einträge für diese Person in PersonAddress nachzuschlagen, dann nehmen Sie die Adressen aus diesen Einträgen. Das Problem bei diesem Ansatz, unter anderem ist, dass, wenn eine neue Adresse hinzugefügt wird, zum Beispiel, werden Sie diesen Nachschlag wiederholen haben, und sicherzustellen, dass es automatisch geschieht, um für die Benutzeroberfläche ordnungsgemäß aktualisiert werden.

Es ist viel besser einfach sowohl auf Person und Adresse hasMany Beziehungen haben. Dann werden Ember Daten alles synchron halten - so etwas wie

// models/person.js 
export default DS.Model.extend({ 
    name: DS.attr(), 
    addresses: DS.hasMany('address') 
}); 

// models/address.js 
export default DS.Model.extend({ 
    address: DS.attr(), 
    persons: DS.hasMany('person') 
}); 
+0

Vielen Dank für die Antwort, mein Datenbankschema verwendet diese Zwischentabelle Details zu speichern Link in Bezug auf. Wollen Sie damit sagen, dass ich noch dieses Setup haben kann, aber dann in meinem Web-Dienst die Daten zu manipulieren, um zurückzukehren, was Sie gerade gesagt? –

+0

Habe gerade gemerkt, dass du hasMany in beiden Modellen benutzt hast, ich dachte nicht, dass das momentan mit Ember Data möglich ist? –

+0

Es war möglich, hasMany in beiden Modellen zu haben, seit Ember Data geboren wurde, und ist der bevorzugte Weg, um viele-zu-viele Beziehungen zu handhaben. Es ist mir egal, wie Ihr Server organisiert ist. Einige Datenquellen auf dem Server bevorzugen möglicherweise ein Modell mit einer Zwischentabelle von Beziehungen. Sie können ein solches Modell wie in Ember verwenden, aber es wird mehr Arbeit auf der Ember-Seite sein. Es ist vorzuziehen, dass der Web-Server Daten in der Embird-Data-Many-to-Many-Form zur Verfügung stellt und akzeptiert. –