Android 更新儿童不更新儿童?
因此,我在注册过程中检查用户名是否存在。唯一的问题是我的孩子更新2没有添加到用户名文件夹中?第一个childUpdate已正确添加,但第二个childUpdate2未正确添加。它只是不更新我的用户名文件夹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
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的答案和良好的文档。供将来参考:好的。供日后参考: