2017-04-22 65 views
1

我正在使用recyclerView,每行代表一個股票,並將其連接到具有用戶身份驗證的Firebase會計,並且每次創建用戶時都會將其添加到我的Firebase數據庫中註冊我的Firebase帳戶),每個用戶都有「user_stocks」(子)字段,並且我做了一個longClickListener,刪除了我的股票列表中的一行,問題是我還需要刪除用戶帳戶中的該股票: enter image description here從Firebase數據庫中刪除字段(Android)

我不能找到一種方法,從火力地堡數據庫中刪除股票:

public void deleteFromFirebase(String user_id) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       User user = dataSnapshot.getValue(User.class); 
       //No metter what i did, it did not delete from fb 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 

能如此請告訴我正確的方向嗎? 謝謝!

回答

1

只需將空在孩子作爲一種價值

FirebaseDatabase.getInstance().getReference("users").child(user_id).setValue(null); 

更新

刪除通過值

public void deleteFromFirebase(String user_id,final String stockName) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id).child("user_stocks"); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot stock : dataSnapshot.getChildren()) { 
       if(stock.getValue().equals(stockName)) 
        stock.getRef().removeValue(); 
       } 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 
+0

它不工作,也將它刪除的條目或只是改變值爲null? – Coder123

+0

@ Coder123它會刪除條目。 – pantos27

+0

@ Coder123也是,你的監聽器在每次值改變時都不會觸發,只有一次。檢查Firebase控制檯的真實價值 – pantos27