2017-05-25 24 views
1

我的代碼工作是這樣的:當我在後,我按「OK」在AlertDialog.Builder然後我去:倍數removevalue()不工作

private void borrar_post(){ 

    Intent intent = new Intent(PostDetailActivity.this, MainActivity.class); 
    intent.putExtra("EXTRA_BORRAR_POST", mPostKey); 
    startActivity(intent); 

} 

我回來主活動,我看如果有什麼我需要刪除:

String borrar = getIntent().getStringExtra("EXTRA_BORRAR_POST"); 

    if (borrar != null) { 

     DatabaseReference mipost = FirebaseDatabase.getInstance().getReference(); 

     mipost.child("user-posts").child(getUid()).child(borrar).removeValue(); 

     mipost.child("posts").child(borrar).removeValue(); 

     mipost.child("post-comments").child(borrar).removeValue(); 

    } 

我從3個地方我有它在我的火力實時數據庫中刪除我的帖子。樹是:

Firebase Tree

這是可能的,我沒有在「後評價」什麼,讓我明白我可能有問題存在(也許我應該檢查是否之前有東西在那裏),但即使當我評論該行時,我仍然有同樣的問題:

有時候一切都被刪除,有時甚至沒有,大部分時間只有「user-posts」子被刪除。

我知道那裏有類似的問題,但我似乎無法找到錯誤,有什麼幫助嗎?

回答

0

您是否有安全規則將寫訪問限制爲某個位置當前值的函數?這可能可以解釋爲什麼有些人取消成功,其他人失敗

要了解爲什麼有些致電removeValue()的呼叫失敗,請添加CompletionListener。您可以在活動定義一個調試監聽器作爲一個字段是這樣的:

private DatabaseReference.CompletionListener mRemoveListener = 
     new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError error, DatabaseReference ref) { 
     if (error == null) { 
      Log.d(TAG, "Removed: " + ref); 
      // or you can use: 
      System.out.println("Removed: " + ref); 
     } else { 
      Log.e(TAG, "Remove of " + ref + " failed: " + error.getMessage()); 
     } 
    } 
}; 

然後將其添加到每個您的通話到removeValue()

String borrar = getIntent().getStringExtra("EXTRA_BORRAR_POST"); 

if (borrar != null) { 
    // always good to log important values 
    Log.d(TAG, "borrar= " + borrar); 

    DatabaseReference mipost = FirebaseDatabase.getInstance().getReference(); 

    mipost.child("user-posts").child(getUid()).child(borrar).removeValue(mRemoveListener); 

    mipost.child("posts").child(borrar).removeValue(mRemoveListener); 

    mipost.child("post-comments").child(borrar).removeValue(mRemoveListener); 
} 
+0

我會嘗試,但對於「安全規則這限制了寫入訪問作爲當前值在某個位置的函數「我想我沒有......應該如何實現它?與互斥體?也許來自firebase的東西? – Dgrm

+0

我試圖刪除它2個職位這種方式,我只得到「borrar =」消息,然後崩潰之前從刪除偵聽器獲取任何日誌:https://image.ibb.co/bD3H8F/screenshot_544.jpg – Dgrm

+0

發佈崩潰的日誌輸出。應該有一個堆棧跟蹤或異常消息。 –

相關問題