Как исправить снимок документа Android Cloud Firestore - PullRequest
0 голосов
/ 19 февраля 2019

Я проверяю, назначил ли пользователь встречу в базе данных, если не добавил пользователя (добавьте новый документ, в котором есть данные пользователя).Проблема моего приложения в том, что оно выполняет функции 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 голосов
/ 19 февраля 2019

Это происходит потому, что когда метод onComplete() запускается впервые, documentSnapshot действительно не существует, поэтому вызывается метод addUser().Это означает, что соответствующий пользователь добавляется в базу данных, что также означает, что метод onComplete() запускается снова (с момента внесения изменений), но на этот раз, часть else оператора запускается и, следовательно, AlertUser() называется.По этой причине оба ваших метода вызываются.

Это вопрос Cloud Firestore, а не базы данных реального времени Firebase, поэтому я соответствующим образом изменил тег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...