0
我已经有一个onDataChange写入来从不同的子节点获取值,但我需要的是将密钥更改为“new”,然后从中检索数据那个孩子如何从Android Firebase中的子节点检索数据
任何投入,将不胜感激..
我已经有一个onDataChange写入来从不同的子节点获取值,但我需要的是将密钥更改为“new”,然后从中检索数据那个孩子如何从Android Firebase中的子节点检索数据
任何投入,将不胜感激..
据我了解,你想改变一个字段,并带回改变的数据。
为e.g,对于这种数据结构,如果你想改变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
当它造成的问题。因为你得到你的根引用并尝试为它设置一个值。这是你的选择。
啊是的..谢谢很多,这有助于。 – Venky
@AtaerCaner如果我想更改大量用户的数据,该怎么办?我怎么做,没有硬编码的随机密钥? –
@VictorNgure我更新了我的答案 – AtaerCaner