Android 更新儿童不更新儿童?

Android 更新儿童不更新儿童?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,因此,我在注册过程中检查用户名是否存在。唯一的问题是我的孩子更新2没有添加到用户名文件夹中?第一个childUpdate已正确添加,但第二个childUpdate2未正确添加。它只是不更新我的用户名文件夹 final DatabaseReference Userref = FirebaseDatabase.getInstance().getReference(); username_check_query = Userref.child("Usernames").orderByChil

因此,我在注册过程中检查用户名是否存在。唯一的问题是我的孩子更新2没有添加到用户名文件夹中?第一个childUpdate已正确添加,但第二个childUpdate2未正确添加。它只是不更新我的用户名文件夹

 final DatabaseReference Userref = FirebaseDatabase.getInstance().getReference();
    username_check_query = Userref.child("Usernames").orderByChild("username").equalTo(mUsernameView.getText().toString());
    usernameChildEvent = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.getValue() == null){

                ScoreClass scoreClass = new ScoreClass(10000, mUsernameView.getText().toString());
                Map<String, Object> scoredata = scoreClass.toMap();
                Map<String, Object> childUpdates = new HashMap<>();
                childUpdates.put("Users/" + user.getUid(), scoredata);
                Userref.updateChildren(childUpdates);


                Username username = new Username(mUsernameView.getText().toString());
                Map<String, Object> userdata = username.toMap();
                Map<String, Object> childUpdates2 = new HashMap<>();
                childUpdates2.put("/Usernames/" + user.getUid(), userdata);
                Userref.updateChildren(childUpdates2);
           }
           else {
                    // other code
            }
            username_check_query.removeEventListener(this);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    };
username_check_query.addListenerForSingleValueEvent(usernameChildEvent);
final DatabaseReference Userref=FirebaseDatabase.getInstance().getReference();
username\u check\u query=Userref.child(“用户名”).orderByChild(“用户名”).equalTo(mUsernameView.getText().toString());
usernameChildEvent=新值EventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.getValue()==null){
ScoreClass ScoreClass=新的ScoreClass(10000,mUsernameView.getText().toString());
Map scoredata=scoreClass.toMap();
Map childUpdates=newhashmap();
childUpdates.put(“Users/”+user.getUid(),scoredata);
Userref.updateChildren(childUpdates);
用户名Username=新用户名(mUsernameView.getText().toString());
Map userdata=username.toMap();
Map childUpdates2=新建HashMap();
childUpdates2.put(“/Usernames/”+user.getUid(),userdata);
Userref.updateChildren(childUpdates2);
}
否则{
//其他代码
}
用户名\u检查\u查询。removeEventListener(此);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
};
username\u check\u query.addListenerForSingleValueEvent(usernameChildEvent);
下面是数据库结构


我做错了什么?

我无法重现你的结果。添加完成侦听器以查看更新的状态:

    Userref.updateChildren(childUpdates2, new DatabaseReference.CompletionListener() {
                @Override
                public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                    if (databaseError == null) {
                        Log.i(TAG, "onComplete: success");
                    } else {
                        Log.w(TAG, "onComplete: fail", databaseError.toException());
                    }
                }
            });
还要验证
username.toMap()
是否生成非空映射:

    Map<String, Object> userdata = username.toMap();
    if (userdata.isEmpty()) {
        Log.e(TAG, "Oops! No data");
    } else {
        Log.i(TAG, "userdata=" + userdata);
    }
Map userdata=username.toMap();
if(userdata.isEmpty()){
Log.e(标记“Oops!无数据”);
}否则{
Log.i(标记“userdata=“+userdata”);
}

我无法重现您的结果。添加完成侦听器以查看更新的状态:

    Userref.updateChildren(childUpdates2, new DatabaseReference.CompletionListener() {
                @Override
                public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                    if (databaseError == null) {
                        Log.i(TAG, "onComplete: success");
                    } else {
                        Log.w(TAG, "onComplete: fail", databaseError.toException());
                    }
                }
            });
还要验证
username.toMap()
是否生成非空映射:

    Map<String, Object> userdata = username.toMap();
    if (userdata.isEmpty()) {
        Log.e(TAG, "Oops! No data");
    } else {
        Log.i(TAG, "userdata=" + userdata);
    }
Map userdata=username.toMap();
if(userdata.isEmpty()){
Log.e(标记“Oops!无数据”);
}否则{
Log.i(标记“userdata=“+userdata”);
}

您能在这里显示firebase的实际数据库结构吗?@VishalPatoliya我已经添加了该结构。为什么不使用model类?您没有检查更新的结果,所以很难说为什么失败。您是否有允许第一次更新但阻止第二次更新的安全规则?请参阅下面qbix的答案,您可以在此处显示firebase的实际数据库结构吗?@VishalPatoliya我已添加了该结构。为什么不使用模型类?您没有检查更新的结果,所以很难说为什么会失败。您是否有允许第一次更新但阻止第二次更新的安全规则?请参阅下面qbix的答案和良好的文档。供将来参考:好的。供日后参考: