2017-09-23 63 views
0

即時消息檢查,看看是否有一個節點存在於firebase中,如果我的函數返回false 我使用push方法,如果爲true,我將使用更新方法。 這是我的功能所花費的ID:我如何檢查使用angularfire2的Firebase中的現有節點?

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; 
    } 

我第一次按下按鈕就創建了一個新的節點,即使節點存在 我第二次推正確更新節點的按鈕。 爲什麼會發生這種情況 每次刷新頁面,我按下保存按鈕,它會創建一個新節點 ,但第二次更新完美。

AskFirebase

+0

當您訂閱的集合,將需要一段時間才能得到結果。更好的是在你的訂閱中執行push方法和'.exists()',而不是等待函數獲得結果。 – Hareesh

+0

你能用一些例子來詳細說明一下嗎? – 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

它沒有工作其進入條件塊,但沒有數據正在更新或推送到firebase – user3640924

+0

對不起,我不好感謝你,所以它終於工作了。 – user3640924

+0

只是一個簡單的問題,爲什麼這個.exists()不包含在文檔中? – user3640924

相關問題