从Firebase数据库中删除特定值

时间:2017-10-16 05:15:00

标签: java android firebase firebase-realtime-database

我已经关注this了。但不幸的是,当我删除具有SAME值的数据时,它也会被删除。我想只删除一个数据。

这是我的数据库结构。 Here is my database

我想只删除一个值。

system()

我有这段代码

你们有什么想法吗?我认为最好的方法是获取患者的ID并删除该数据,因为ID是唯一的。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:15)

首先获取该值,然后将其删除。 如果您不知道该对象的密钥,您只需查询然后使用DataSnapshot getKey() methodpostsnapshot.getKey()获取该对象密钥,如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(); }

或查看我的Firebase Helper Class Tutorial

string[] items = new string[]
{
    "Jam", "Tea", "Something", "Something else"
};

Console.WriteLine(
    String.Join(
        Environment.NewLine,
        items.Select((x, n) => $"{n + 1}. {x}")));

答案 1 :(得分:0)

您可以通过以下代码删除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());
    }
});

答案 2 :(得分:0)

您的过滤查询错误了... 并删除患者/ nodeid / patient_id /地址设置为空