如何修复Android Cloud Firestore文档快照

时间:2019-02-19 10:42:09

标签: java android firebase google-cloud-firestore

我正在检查用户是否在数据库中进行了约会(如果未添加)(添加包含用户详细信息的新文档)。我的应用程序的问题在于它同时运行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");
            }
        }
    });

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为第一次触发onComplete()方法时,{strong}不存在documentSnapshot,因此调用了addUser()方法。这意味着将相应的用户添加到数据库,这也意味着onComplete()方法被再次触发(因为进行了更改),但是这一次,语句的else部分被触发了因此,AlertUser()被调用。这就是两个方法都被调用的原因。

这是一个Cloud Firestore问题,而不是Firebase实时数据库问题,因此我相应地更改了标签。