首页 > 解决方案 > 添加相同的键名值

问题描述

如果我想添加具有相同键名但不同值的数据,如何在不替换现有数据的情况下做到这一点?例如,数据库如下所示:

database
   |______user1
           |______sameKey: data1
           |______sameKey: data2

如果我使用: DatabaseRef.child(user1).child("sameKey").setValue(data);,它将sameKey用新数据覆盖 ,但我希望它只是不同的数据记录。如何做到这一点?

标签: androidfirebasefirebase-realtime-database

解决方案


如果您想使用相同的键显示不同的记录,只需将其包裹在一个按键下,这是一个字母数字随机值

 mDatabaseRef.child(user1).push().child("sameKey").setValue(data);

现在,如果您只想更新当前数据而不是替换它

您将需要使用地图并使用 updateChildren 看看这个例子

   Map<String,Object> mapData = new HashMap<>();
    mapData.put("sameKey",data);
    mDatabaseRef.child(user1).child(sameKey).updateChildren(mapData).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Write was successful!
                // ...
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Write failed
                // ...
            }
        });

这样你只会替换更新的数据而不是整个节点

在此处查看更新或删除数据

https://firebase.google.com/docs/database/android/read-and-write?hl=en


推荐阅读