如何从Android Firebase

时间:2017-02-22 11:31:17

标签: android firebase-realtime-database

我已经编写了一个onDataChange来获取来自不同子节点的值,但我需要的是更改密钥,让他们说" new"然后从该子项中检索数据

任何输入都将受到赞赏..

1 个答案:

答案 0 :(得分:1)

据我所知,您想要更改字段并恢复更改的数据。

enter image description here

例如,对于此数据结构,如果您想要更改Username,请创建具有不同名称User newUser = new User("https://...","newUserName)的用户模式。并更改用户模式

中的字段
public String Profile;
public String newKey;

然后将新模态赋予该uid,

FirebaseDatabase.getInstance().getReference().child("Users").child("ECWHIksxJ0Q5SUIIrev4BjnjmrJ3").setValue(newUser, new DatabaseReference.CompletionListener() {
                    @Override
                    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                        DatabaseReference yourRef = databaseReference.getRef();
                    }
                });

现在您已经更改了数据的参考。你尝试过这样的事吗?

<强>更新

如果您想使用单个操作更新多个值/字段,则应创建一个地图并将每个路径都放入其中。

在firebase中,每个表,每个特定字段都是一个路径。考虑上面显示的数据结构。如果您想要更改Username字段:

HashMap<String, Object> updateMap = new HashMap<>();

updateMap.put("/Users/ECWHIksxJ0Q5SUIIrev4BjnjmrJ3/Username", "newUserName");

对于不同的用户:

updateMap.put("/Users/DIFFERENT_USER_KEY/Username", "newUserName2");

对于不同的表:

updateMap.put("/YourOtherTable/DifferentPath/DifferentField", true);

然后获取数据库根引用并立即更新。

FirebaseDatabase.getInstance().getReference().updateChildren(updateMap).addOnCompleteListener(new OnCompleteListener...)

这是在一个操作中更新很多内容的非常简单的方法,但在编写firebase rules时会导致问题。因为您获得了根引用并尝试为其设置值。选择是你的。