我已经编写了一个onDataChange来获取来自不同子节点的值,但我需要的是更改密钥,让他们说" new"然后从该子项中检索数据
任何输入都将受到赞赏..
答案 0 :(得分:1)
据我所知,您想要更改字段并恢复更改的数据。
例如,对于此数据结构,如果您想要更改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
时会导致问题。因为您获得了根引用并尝试为其设置值。选择是你的。