2017-02-22 102 views

回答

1

据我了解,你想改变一个字段,并带回改变的数据。

enter image description here

为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当它造成的问题。因为你得到你的根引用并尝试为它设置一个值。这是你的选择。

+0

啊是的..谢谢很多,这有助于。 – Venky

+0

@AtaerCaner如果我想更改大量用户的数据,该怎么办?我怎么做,没有硬编码的随机密钥? –

+0

@VictorNgure我更新了我的答案 – AtaerCaner

相关问题