2017-09-21 7 views
0

암호 제목이 유감입니다. Firebase db를 처음 사용했습니다. AngularFire (ng4)와 함께 사용하고 있습니다. 나는 종마 (말)에 관한 웹 사이트에서 일하고있다. 각 종마에는 소유자가 있고 소유자에게는 여러 개의 종마가있을 수 있습니다. 각 종마에는 하나 이상의 종축이 있고 종축에는 종마가 여러 개 있습니다. 이제 3 종의 최상위 노드가 있습니다 : 종마, 소유자 및 스터드 북.Firebase db에 조인 노드를 유지하는 방법

나는 종마를 추가하거나 수정할 수있는 양식이 있습니다. 이 양식에는 가능한 모든 소유자와 모든 가능한 스터드 북이있는 선택 상자가 있습니다. 종마를 저장하면 전체 종 소유자 노드와 종주 노드는 종마 노드에 저장됩니다. 이 부분은 잘 작동합니다.

새 페이지에 스터드 북 및 모든 종마의 상세 정보가 표시됩니다. 이 부분으로, 나는 고군분투하고있다. 나는 많은 것을 읽었으며이 studbook의 일부인 studee 키와 모든 종마 키 (또는 전체 항목)를 넣는 조인 노드 (studbook_stallions)가 필요하다고 생각합니다. 나는 지금까지 권리가 있니?

종마를 추가 할 때 종결점에 항목을 추가 할 수도 있지만 종마를 수정할 때는 어떻게해야합니까? 종마가 이미 조인 노드에 있는지 확인해야합니까? 영향을 미치지 않을까요?

이 내 추가 종마 방법 :

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

그리고 이것은 내 업데이트 종마 방법 :

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

방법 또한 노드 (studbook_stallions)에 가입 수정하기 위해 이러한 방법을 변경하려면?

그리고 비슷한 질문입니다. 이제 종마 노드에 전체 소유자 노드가 있습니다. 내 소유자를 업데이트하면이 소유자 노드를 어떻게 업데이트합니까? 이 내 업데이트 소유자 방법 :

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

입니다

현재이 종마 노드에는 전체 소유자 데이터가 있지만 소유자 노드에는 아직 종마 데이터가 없습니다. 나는 곧 바뀔 것이다.

나는 최고의 워크 플로우가 무엇인지 잘 모르기 때문에 studbook을 아직 모델링하지 않았습니다. 내 studbook에는 여러 개의 종마가 있습니다. 내 종마를 업데이트 할 때 스터드 북 노드에서 같은 종마를 업데이트해야합니다. 하지만 종아리 노드에서 어떤 종마가 있는지 어떻게 알 수 있습니까? 그리고 다른 길은 똑같습니다. 내가 작성한 스터드 북을 업데이트하면 몇 개의 종마 노드에서 스터드 북을 업데이트해야합니다.

답변

0

데이터베이스를 시각화하는 데 많은 도움이 여기에 귀하의 데이터베이스 구조를 게시하지만 난 당신이 여기에서 찾고있는 것은 여러 아이가 동시에 노드를 업데이트하는 것입니다 생각하고, 이것은 당신이 어떻게 할 것입니다 :

var childUpdates = []; 

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

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

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

이렇게하면 두 자식 노드가 동시에 업데이트됩니다.

+0

답변 해 주셔서 감사합니다. 한 번에 여러 자식 노드를 업데이트하면 내 다음 질문이 될 것이다;) 내 주요 문제는 업데이트 할 노드를 아는 방법입니다. 내가 업데이트해야 할 종업원이나 소유자를 업데이트 할 때? 내 질문을 편집하고 db 구조를 추가했습니다. –

+0

괜찮습니다! 그런 일을하려면 업데이트하려는 종마 ID를 추적하면됩니다. Stallion 오브젝트는 어떻게 정의합니까? – Alex