2017-09-21 5 views
0

Entschuldigung für den kryptischen Titel. Ich bin neu in Firebase db. Ich benutze es mit AngularFire (ng4). Ich arbeite an einer Website über Hengste (Pferde). Jeder Hengst hat einen Besitzer und ein Besitzer kann mehrere Hengste haben. Jeder Hengst ist auch bei einem oder mehreren Zuchtbüchern eingetragen und ein Zuchtbuch hat mehrere Hengste. Ich habe jetzt 3 Top-Level-Knoten: Hengste, Besitzer und Stammbücher.So pflegen Sie den Join-Knoten in Firebase db

Ich habe ein Formular zum Hinzufügen oder Bearbeiten eines Hengstes. Dieses Formular enthält Auswahlboxen mit allen möglichen Besitzern und allen möglichen Zuchtbüchern. Wenn ich den Hengst rette, werden der gesamte Besitzerknoten und die Stammbuchknoten im Hengstknoten gespeichert. Dieser Teil funktioniert gut.

Eine neue Seite zeigt die Details des Zuchtbuchs und seiner Hengste. Mit diesem Teil kämpfe ich. Ich habe viel gelesen und ich denke, ich brauche einen Join-Knoten (studbook_stallions), in den ich den Zuchtbuchschlüssel und alle Hengstschlüssel (oder ganze Items?), Die Teil dieses Zuchtbuchs sind, hineinlege. Ich habe Recht, soweit?

Wenn ich einen Hengst hinzufüge, kann ich auch einen Eintrag im Join-Knoten hinzufügen, aber was ist, wenn ich einen Hengst modifiziere. Muss ich zuerst prüfen, ob der Hengst bereits im Join-Knoten ist? Wird dies die Leistung nicht beeinflussen?

Das ist meine Add Hengst Methode:

addStallion(alias: string, formValues: Stallion): any { 
    formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"]; 
    return this.af.database.ref().child("stallions/" + alias).set(formValues); 
} 

Und das ist meine Update Hengst Methode:

updateStallion(alias: string, formValues: Stallion) { 
    formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"]; 
    this.af.object("stallions/" + alias).update(formValues); 
} 

Wie diese Methoden zu ändern, um auch den Knoten zu ändern join (studbook_stallions)?

Und eine ähnliche Frage. Ich habe jetzt den ganzen Besitzerknoten in meinem Hengstknoten. Wie aktualisiere ich diesen Besitzerknoten, wenn ich meinen Besitzer aktualisiere? Das ist mein Update Inhaber Methode:

updateOwner(alias: string, formValues: Owner) { 
    formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"]; 
    this.af.object("stallions/" + alias).update(formValues); 
    // Also update in stallion node: 
    // ????????????? 
} 

[bearbeiten]

Das ist mein Hengst Knoten:

enter image description here

Das ist mein Besitzer Knoten:

enter image description here

Zu diesem Zeitpunkt hat der Hengstknoten die vollständigen Besitzerdaten, aber der Besitzerknoten hat noch nicht die vollständigen Stalldaten. Ich werde mich bald ändern.

Ich habe das Stutbuch noch nicht modelliert, weil ich nicht sicher bin, was der beste Workflow ist. Mein Zuchtbuch wird mehrere Hengste haben. Wenn ich meinen Hengst aktualisiere, muss ich auch den Hengst im Stammbuchknoten aktualisieren. Aber woher weiß ich welchen Hengst im Stammbuchknoten? Und das Gleiche umgekehrt. Ich aktualisiere mein Zuchtbuch und muss nun das Zuchtbuch in mehreren Hengstknoten aktualisieren.

Antwort

0

Buchung Ihre Datenbankstruktur hier würde viel helfen, Ihre Datenbank zu visualisieren, aber ich denke, was Sie hier suchen ist mehrere Kind-Knoten gleichzeitig zu aktualisieren, und das ist, wie Sie es tun würde:

var childUpdates = []; 

childUpdates[ '/stallions/' + yourStallionID ] = someDataHere; 

childUpdates[ '/stallionOwners/stallions/' + yourStallionID ] = someOtherDataHere; 

firebase.database().ref().update(childUdates); 

Dies würde sicherstellen, dass beide untergeordneten Knoten gleichzeitig aktualisiert werden.

+0

Danke für Ihre Antwort. Das Aktualisieren mehrerer untergeordneter Knoten auf einmal wäre meine nächste Frage;) Mein Hauptproblem besteht darin, zu wissen, welche Knoten zu aktualisieren sind. Wenn ich mein Zuchtbuch oder den Besitzer aktualisiere, welchen Hengst muss ich aktualisieren? Ich habe meine Frage bearbeitet und die db-Struktur hinzugefügt. –

+0

Kein Problem! Um das zu tun, musst du nur die Hengst-ID im Auge behalten, die du aktualisieren möchtest. Wie definierst du dein Stallion-Objekt? – Alex

Verwandte Themen