[英]Remove a specific value from Firebase 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 是唯一的。 任何帮助表示赞赏!
首先,获取要删除的特定值,然后将其删除。
如果您不知道该对象的键,则必须查询以从DataSnapshot.
获取对象键DataSnapshot.
这可以通过使用getKey() method
来完成(例如postsnapshot.getKey()
)
或者,查看我的Firebase Helper Classes或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();
}
您可以通过以下代码删除 Dummy1:
FirebaseDatabase.getInstance().getReference("dentist-ass-key")
.child("Patients")
.child("91C...key")
.child("-KwYUqs...key")
.child("firstname")
.removeValue();
我举了一个例子来说明你需要如何遍历一棵树来删除一个节点“Dummy1”用户名
如果您不知道要删除的项的键,则首先需要查询数据库以确定这些键:
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());
}
});
您的过滤器查询错误......并删除Patients/nodeid/patient_id/address 设置为null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.