К сожалению, мое условие if не работает, и я понятия не имею, как перейти к оператору else
Это означает, что (snapshot.exists() && user)
всегда оценивается как true, хотя на самом деле выне хочу (хотя бы один раз, я полагаю).
При каждом входе в систему onAuthStateChanged
будет запускаться с ненулевым пользовательским объектом.Но это часть snapshot.exists()
, которую, вероятно, нужно изменить, чтобы точнее отражать то, что вы пытаетесь сделать.
Документы для snapshot.exists say "Возвращает true, если этоDataSnapshot содержит любые данные. Это немного более эффективно, чем использование snapshot.val ()! == null ".
Глядя на изображение из структуры вашей базы данных, кажется, что даже когда isAdmin
ложно, этоpath, adminUIDs/{theUserID}
будет по-прежнему иметь некоторое ненулевое значение , в частности, {isAdmin: false}
.
Таким образом, изменение (snapshot.exists() && user)
на (snapshot.exists() && user && snapshot.val().isAdmin)
может помочь.