我正在检查用户是否在数据库中进行了约会(如果未添加)(添加包含用户详细信息的新文档)。我的应用程序的问题在于它同时运行AddUser()
和AlertUser()
函数:
DocumentReference docRef = firebaseFirestore.collection(group).document(userIdentity);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()){
DocumentSnapshot documentSnapshot = task.getResult();
if (documentSnapshot != null) {
if (!documentSnapshot.exists()){
//User does not exist create the new user
addUser();
} else {
//User has already made an appointment show dialog
AlertUser();
}
}
}else {
Log.i("Key","Task not successfull");
}
}
});
答案 0 :(得分:1)
之所以发生这种情况,是因为第一次触发onComplete()
方法时,{strong}不存在documentSnapshot
,因此调用了addUser()
方法。这意味着将相应的用户添加到数据库,这也意味着onComplete()
方法被再次触发(因为进行了更改),但是这一次,语句的else
部分被触发了因此,AlertUser()
被调用。这就是两个方法都被调用的原因。
这是一个Cloud Firestore问题,而不是Firebase实时数据库问题,因此我相应地更改了标签。