2017-10-16 112 views
0

我已遵循this。但不幸的是,當我刪除一個具有SAME值的數據作爲另一個時,它也會被刪除。我只想刪除單個數據。從Firebase數據庫中刪除特定值

這裏是我的數據庫結構。 Here is my database

我想只刪除只有一個值。

Query query = databaseReference.orderByChild("address").equalTo(tvPatientAddress.getText().toString()); 

         query.addChildEventListener(new ChildEventListener() { 
          @Override 
          public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
           dataSnapshot.getRef().setValue(null); 
          } 

          @Override 
          public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

          } 

          @Override 
          public void onChildRemoved(DataSnapshot dataSnapshot) { 

          } 

          @Override 
          public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

我有這樣的代碼

任何機會,你們有一個想法?我認爲最好的方法是獲取患者的ID並刪除該數據,因爲ID是唯一的。任何幫助感謝!

+0

你可以給節點要在給定的圖片刪除其中一個例子嗎? –

+0

例如我要刪除,Dummy1 @BurhanuddinRashid –

回答

6

先獲取該值,然後將其刪除。 ,如果你不知道該對象所有你需要做的就是查詢的鍵,然後用得到的是getKey() method對象鍵從DataSnapshotpostsnapshot.getKey()

或檢查出我Firebase Helper Class Tutorial

mdatabaseReference.child("users").orderByKey().equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

    for (DataSnapshot postsnapshot :dataSnapshot.getChildren()) { 

    String key = postsnapshot.getKey(); 
    dataSnapshot.getRef().removeValue(); 

} 
+0

我將如何獲取UID? –

+0

private String uId = FirebaseAuth.getInstance()。getCurrentUser(); –

+0

String鍵= postsnapshot.getKey();使用和獲取的對象@KyleAnthonyDizon –

0

您可以刪除Dummy1通過下面的代碼:

FirebaseDatabase.getInstance().getReference("dentist-ass-key") 
.child("Patients") 
.child("91C...key") 
.child("-KwYUqs...key") 
.child("firstname") 
.removeValue(); 

我已經給出了例子來告訴你如何需要tranverse樹刪除節點「Dummy1」用戶名

如果你不」 t知道要刪除的項的關鍵,您將首先需要查詢數據庫以確定這些密鑰:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("dentist-ass-key"); 
Query dummyQuery = ref 
    .child("Patients") 
    .child("91C...key") 
    .orderByChild("firstname") 
    .equalTo("Dummy1"); 

dummyQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot dummySnapshot: dataSnapshot.getChildren()) { 
      dummySnapshot.getRef().removeValue(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.e(TAG, "onCancelled", databaseError.toException()); 
    } 
}); 
+0

我將如何獲得此密鑰? .child(「 - KwYUqs ...鍵」) –

+0

檢查我的更新答案 –

+0

但我有2個數據與「Dummy1」同「姓」,他們都會被刪除? –

0

你篩選查詢是錯誤的... 和刪除患者/ NODEID/patient_id /地址設置爲null