Вы, кажется, путаете два продукта:
- Аутентификация Firebase, которая позволяет пользователям входить в ваше приложение и которая имеет профиль пользователя с фиксированным набором свойств.
- База данных Firebase, которая позволяет хранить данные и которая обычно используется для хранения дополнительных свойств для пользователя, которые не вписываются в его профиль Аутентификации Firebase.
Код, который вы прочитали из профиля пользователя из Firebase Authentication. Он ничего не читает из базы данных Firebase. Профиль пользователя в Firebase Authentication не имеет свойства username
. имеет свойство displayName
, но это опять-таки не имеет ничего общего с базой данных Firebase.
Похоже, вы сохранили дополнительную информацию о пользователях в базе данных Firebase с помощью вызова:
firebase.database().ref("users").push({ email: user.email, password: password, username: username })
Хотя это допустимый способ хранения данных в базе данных, он затрудняет поиск данных для пользователя с аутентификацией Firebase. Последние пользователи идентифицируются по их UID (user.uid
), поэтому можно хранить дополнительные пользовательские свойства под /users/$uid
:
firebase.database().ref("users").child(user.uid).set({ email: user.email, password: password, username: username })
Если у вас есть такая структура, вы можете загрузить дополнительные свойства для текущего пользователя с помощью:
var usersRef = firebase.database().ref("users");
usersRef.child(user.uid).once("value").then(function(snapshot) {
console.log(snapshot.val());
});
С вашей текущей структурой вы можете также искать пользователя. Но поскольку в вашей структуре может быть несколько пользователей с одним и тем же адресом электронной почты, вам нужен запрос для него и необходимо учитывать тот факт, что запрос может соответствовать нескольким узлам:
var usersRef = firebase.database().ref("users");
var query = usersRef.orderByChild("email").equalTo(user.email);
query.once("value").then(function(snapshot) {
snapshot.forEach(function(userSnapshot) {
console.log(userSnapshot.val());
});
});
Обновление
Насколько я вижу, вы должны заменить свой
users.$add($scope.data);
С
ref.child(firebase.auth().currentUser.uid).set($scope.data);