2017-09-23 5 views
0

메신저 내 함수가 false를 반환하면 노드가 firebase에 있는지 확인합니다. true이면 push 메소드를 사용합니다. 나는 update 메소드를 사용합니다. 이 내 함수는이 ID를 취한다 :어떻게하면 firefbase의 기존 노드가 angularfire2를 사용하고 있는지 확인할 수 있습니까?

checkIfExist(path:string){ 
    var a; 
    const user = this.db.object(`/users/${path}/`,{ preserveSnapshot: true }); 
    user.subscribe((obj) => { 
     if (obj.$exists()) { 
     a = true; 
     } else { 
     a = false; 
     } 
    }); 
    return a; 
    } 

내가 그것을 노드가 내가 제대로 노드를 업데이트 버튼을 눌러 두 번째있는 경우에도 새 노드를 생성 버튼을 눌러 처음. 페이지가 새로 고침 될 때마다이 문제가 발생하는 이유는 무엇입니까? 저장 버튼을 누르면 새 노드가 만들어집니다. 두 번째로 완벽하게 업데이트됩니다.

+0

을 시도 AskFirebase. 더 나은 결과를 얻으려고 함수를 기다리는 것보다 푸시 메서드와'.exists()'를 구독 내에서 수행하는 것이 좋습니다. – Hareesh

+0

몇 가지 예를 들어 plz를 자세히 설명해 주시겠습니까? – user3640924

+0

은 버튼을 누르거나 firebase에 쓰는 기능을 실행하는 코드를 보여줍니다. – Hareesh

답변

0

당신이 컬렉션에 가입하면이 결과를 얻기 위해 시간이 좀 걸릴 것이

saveData(){ 
    this.db.object(`/users/YourPath/`,{ preserveSnapshot: true }) 
     .subscribe(snapshot => { 
      if(snapshot.exists()) { 
       //data already there, here goes your update method 
      }else{ 
       //no data exists, here goes your push method 
      } 
     }) 
} 
+0

조건부 블록 입력이 작동하지 않았지만 데이터가 업데이트되거나베이스베이스에 푸시되었습니다. – user3640924

+0

미안하지만 내게 정말 힘들어 마지 않습니다. – user3640924

+0

왜 단 한번의 질문입니까?이 .exists()가 문서에 포함되어 있지 않은 이유는 무엇입니까? – user3640924