繁体   English   中英

从 Firebase 数据库中删除特定值

[英]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 ClassesFirebase 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM