2017-09-21 8 views
0

謎のタイトルには申し訳ありません。 Firebase dbを初めて使用しました。 AngularFire(ng4)で使用しています。 私は種馬(馬)についてのウェブサイトに取り組んでいます。各種馬は所有者を持ち、所有者は複数の種子を持つことができます。各種馬は1つ以上の種子帳にも登録されており、種子帳には複数の種馬があります。 私は3つのトップレベルノードを持っています:種馬、所有者、およびスタッドブック。Firebaseデータベースに参加ノードを維持する方法

私は種を追加または編集するためのフォームを持っています。このフォームには、すべての可能な所有者とすべての可能なスタッドブックとの選択ボックスがあります。スタリオンを保存すると、所有者ノード全体とスタッドブックノードがスタリオンノードに保存されます。この部分は正常に動作しています。

新しいページには、スタッドブックとそのすべての種馬の詳細が表示されます。この部分で、私は苦労しています。私は多くを読んだことがあります。私は、スタッドブックのキーとスタッドブックの一部であるすべてのスタリオンキー(またはアイテム全体)を入れるジョイントノード(studbook_stallions)が必要だと思います。私は今のところ正しい?

私は、また、結合ノードにエントリを追加することができますが、種馬を変更するときはどうですか?まず、スタイリオンがすでに結合ノードにあるかどうかをチェックする必要がありますか?これはパフォーマンスに影響しませんか?

これは私の追加種馬方法である:

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

そして、これは私の更新種馬方法である。また、参加ノード(studbook_stallions)を変更するためにこれらのメソッドを変更する方法

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

同様の質問です。私は今、私の種馬ノードに所有者ノード全体を持っています。オーナーを更新するときに、このオーナーノードを更新するにはどうすればよいですか? これは私の更新所有法である:これは私の種馬ノードである

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

[編集]

enter image description here

これは私の所有者ノードである:

enter image description here

この時点で、スタリオンノードには完全な所有者データがありますが、所有者ノードにはまだ完全なスタリオンデータがありません。私はすぐに変更されます。

私は最高のワークフローが何であるかわからないので、スタッドブックをまだモデル化していません。私のスタッドブックには複数の種馬があります。私が自分の種馬を更新するときには、また、種馬のノードで同じ種馬を更新する必要があります。しかし、どのように私はスタッドブックノードのどの種馬を知っていますか?そして、他の方法は同じです。私はスタッドブックを更新し、いくつかのスタリオンノードでスタッドブックを更新する必要があります。ここでは、データベースの構造を投稿

答えて

0

は、データベースを視覚化するために大いに役立つだろうが、私はあなたがここに探していることは、同時に複数の子ノードを更新することであると思うし、これは、あなたがそれを行うだろうかです:

var childUpdates = []; 

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

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

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

これにより、両方の子ノードが同時に更新されるようになります。

+0

あなたの答えをありがとう。一度に複数の子ノードを更新することは私の次の質問です;)私の主な問題は、更新するノードを知る方法です。私のスタッドブックまたはオーナーを更新する場合、そのスタリオンを更新する必要がありますか?私は自分の質問を編集し、db構造を追加しました。 –

+0

問題ありません!そうするには、更新したい種のIDを追跡するだけです。あなたのStallionオブジェクトをどのように定義しますか? – Alex

関連する問題