我使用addListenerForSingleValueEvent将值添加到当前用户的子“代码”中,但是数据重复了。Here is the database before the coding
这是addListenerForSingleValueEvent的编码
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
final String UserId = mUser.getUid();
mReference = FirebaseDatabase.getInstance().getReference("Users");
final DatabaseReference currentUserId = mReference.child(UserId);
currentUserId.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
user.setCode(riasec1);
currentUserId.child(UserId).setValue(user);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
[Here is the database after the coding is executed为什么要复制整个用户,而不是只插入值“ code”?
通话时
currentUserId.child(UserId).setValue(user);
您在说"add whole user in to node with name 'UserId'"
所以您想何时更新子项无需重写整个对象,您应该传递节点名称,例如
currentUserId.child(UserId).child("code").setValue(riasec1);