是否可以仅在firebase上更新我孩子的特定数据?

时间:2018-02-21 10:51:37

标签: android firebase firebase-realtime-database

是否可以仅在我的Android Firebase上更新某个用户的数据?我该怎么做呢?如果我使用管理员帐户,我可以在哪里专门更新所有用户?

例如在我的firebase数据库中 enter image description here

我只想更新SCYQ的用户详细信息---我想更改名称,电子邮件,日期。用户只是在不影响其他用户信息的情况下?

2 个答案:

答案 0 :(得分:2)

是的,有可能:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String useruid=user.getUid();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Accounts").child("user").child(useruid);
ref.child("date").setValue(newdate);
ref.child("email").setValue(newemail);
ref.child("name").setValue(newname);
ref.child("type").setValue(newtype);

如果列表视图中有名称列表,并且您想要更新它们,则可以执行以下操作:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final String selectedFromList = (String) listview.getItemAtPosition(position);
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Accounts").child("user").child(useruid);
ref.orderByChild("name").equalTo(selectedFromList).addValueEventListener(new ValueEventListener(){
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {

  //update values here
     }
  }

   @Override
 public void onCancelled(FirebaseError firebaseError) {

            }
        });
    });

答案 1 :(得分:2)

虽然Peter的回答有效,但它会向数据库发送四次单独的写入。这反过来会四次触发该用户数据的监听器,这可能不是您想要的。

要一次更新节点的某些部分,请使用foo方法。

bar

现在,它会在一个更新命令中发送所有四个值,所有这些值都会失败或成功,并导致对其他客户端的一次更新。

另请参阅Firebase文档中的update specific fields部分。