addListenerForSingleValueEvent不断复制输出

问题描述 投票:0回答:1

我使用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”?

java android firebase
1个回答
0
投票

通话时

currentUserId.child(UserId).setValue(user);

您在说"add whole user in to node with name 'UserId'"

所以您想何时更新子项无需重写整个对象,您应该传递节点名称,例如

currentUserId.child(UserId).child("code").setValue(riasec1);
© www.soinside.com 2019 - 2024. All rights reserved.