是否可以仅在我的Android Firebase上更新某个用户的数据?我该怎么做呢?如果我使用管理员帐户,我可以在哪里专门更新所有用户?
我只想更新SCYQ的用户详细信息---我想更改名称,电子邮件,日期。用户只是在不影响其他用户信息的情况下?
答案 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部分。