Я работаю над нативным приложением для Android, и у меня есть другой работающий код для аутентификации моего пользователя с использованием аутентификации по электронной почте / паролю в firebase.После аутентификации я сохраняю данные пользователя в базе данных Firebase RelayTime.
Единственная проблема с ним - это часть, когда я пытаюсь запросить базу данных, чтобы проверить, существует ли пользователь уже.Ниже приведен фрагмент кода, который выполняет этот запрос, однако, кажется, что поток не входит в часть 'addListenerForSingleValueEvent':
private void firstTimeUser(final String chkMail){
myRef.child("profile").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userExists = dataSnapshot.hasChild(chkMail);
Log.d(TAG, "UserCheck1= " + userExists);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "An unexpected error occurred!", Toast.LENGTH_SHORT).show();
}
});
Log.d(TAG, "UserCheck2 = " + userExists);
}
Некоторое расследование, которое я провел:
- Отладка показывает, что код не входит в onDataChange или onCancelled.
- Переменная chkMail не является нулевой (снова отображается в отладке).
- Приложение подключается к правильной базе данных Firebase идетский профиль существует.
- Если я уберу эту проверку (независимо от того, существует ли пользователь в БД или нет), следующая часть обновления базы данных Firebase данными пользователя проходит через все детали, и данные отображаются на панели инструментов Firebase.Однако это должно произойти, только если пользователь еще не существует.
Я также посмотрел на тему this .Включены операторы Log внутри onDataChange (как видно из приведенного выше фрагмента), однако UserCheck1 нигде не регистрируется, предполагая, что выполнение пропускается!
Есть ли какие-либо указатели от всех ваших хороших людей?