2015-05-11 103 views
1

我是Firebase的新手,非常感謝您對此有所瞭解。當我以這種方式調用Firebase setValue(obj,callback)函數時,它可以很好地工作。但是,當我嘗試刪除「ref」引用的值時,沒有任何反應。這只是一個測試帳戶,所以我的安全規則設置爲完全讀取和寫入。輸出如下。一些輸出來自調用removeNode(...)的封裝run()方法。任何見解都非常感謝。Firebase Java API removeValue無法正常工作

public void removeNode(final Firebase ref) throws Exception { 

    try { 
     System.out.println("Start Remove Node: " + ref.toString()); 

     final AtomicBoolean done = new AtomicBoolean(false); 
     ref.removeValue(new Firebase.CompletionListener() { 
      @Override 
      public void onComplete(FirebaseError firebaseError, Firebase firebase) { 
       done.set(true); 
       System.out.println("Remove Node complete"); 
       if (firebaseError != null) { 
        System.out.println("ErrorCode: " + firebaseError.getCode()); 
        System.out.println("ErrorMsg: " + firebaseError.getMessage()); 
       } 
       System.out.println("Remove Complete Done"); 
      } 
     }); 
     while (!done.get()) { 
      Thread.sleep(500); 
      System.out.println("Remove Node Sleeping"); 
     } 

    } catch (Exception e) { 
     System.out.println("Remove Node Exception: " + e.getMessage()); 
    } 
} 

我的輸出如下:

in run() - about to removeNode https://<instance>.firebaseio.com/node/node 
Start Remove Node: https://<instance>.firebaseio.com/node/node 
Remove Node Sleeping 
Remove Node Sleeping 
Remove Node complete 
Remove Complete Done 
Remove Node Sleeping 
in run() - RemoveNode leaving normally 
pool-3-thread-1 
All threads handled so far? {true} 
Complete 

Process finished with exit code 0 

注:我有這種類似的結果。

ref.setValue(null, new Firebase.CompletionListener() { 
      @Override 
      public void onComplete(FirebaseError firebaseError, Firebase firebase) { 
       done.set(true); 
       System.out.println("setNull Node complete"); 
       if (firebaseError != null) { 
        System.out.println("ErrorCode: " + firebaseError.getCode()); 
        System.out.println("ErrorMsg: " + firebaseError.getMessage()); 
       } else { 
        System.out.println("FirebaseError: NULL"); 
       } 
       System.out.println("setNull Complete Done"); 
      } 
     }); 
+0

交叉帖子:https://groups.google.com/forum/#!topic/firebase-talk/RItU7nD-PjM –

回答

2

你的火力地堡URL用於去除被https://BLAH/node/node

是它應該是https://BLAH/node

取出網址並將其粘貼到瀏覽器中以在Forge中查看,然後仔細檢查數據是否存在。

+0

我的網址故意爲https:// blah/node/node,所以這不是問題但你的小費指向了正確的方向。 當使用curl或直接瀏覽器鏈接時,我得到預期值或在這種情況下缺少值:null。但是,在儀表板中,我看到未更新以反映數據更改的緩存版本的數據。 – mba12

+0

續:簡單刷新,登錄/註銷似乎無法更新Forge數據。有新鮮的Forge數據展示並清除其緩存的技巧嗎? 謝謝! – mba12

+0

續:我想通了。 url https:// .firebaseio.com /負責管理根節點。我試圖訪問 https:// /firebaseio.com//node當我真的只需要訪問https:// .firebaseio.com/node 謝謝! – mba12