2015-05-11 108 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