Моя firbase база данных выглядит следующим образом:Как обойти уникальный ID и ссылки на дочерние узлы
app
users
-gn4t9u4ut304u9g4
email
uid
Как ссылаться на адрес электронной почты и идентификатор пользователя? Когда я пытаюсь это:
$rootScope.dashtype.child('users').orderByChild('uid').equalTo($rootScope.auth.uid).on('value', function(snapshot){
$rootScope.user = snapshot.val();
console.log($rootScope.user);
})
Я получаю правильный объект, но с уникальным идентификатором в качестве корня:
Object {-JvaZVrWGvJis0AYocBa: Object}
И потому, что это динамическое свойство, я не знаю, как ссылаться на дочерние объекты. Я просто хочу иметь доступ к полям пользователя следующим образом: $ rootScope.user.email и т. Д.
«-gn4t9u4ut304u9g4» не является UID. Это уникальный идентификатор, который Firebase автоматически создает, когда вы что-то нажимаете. Из-за этого я не сейчас, как ссылаться на поля пользователя. –
Мое первоначальное замечание было наполовину задумано и случайно отправлено - оно было удалено. Поскольку вы знаете uid пользователя, которого хотите ($ rootScope.auth.uid), вы можете захотеть использовать uid в качестве имени узла для каждого пользователя. Есть несколько преимуществ в том, что он упростит ваш вышеуказанный код, поскольку пользовательский узел может быть непосредственно прочитан с помощью чего-то вроде: var ref = new Firebase (FIREBASE_URL + '/ users /' + authUser.uid). Кроме того, это может упростить правила безопасности записи, так как переменная типа $ user_id может использоваться для обозначения имени каждого узла (uid). – Jay
@Jay Да, это то, что я хочу, но проблема в том, что Firebase ID (Timestamp) автоматически создается как корень для моих пользовательских данных. Поэтому, делая это, как вы предлагаете, все равно будет выглядеть так: FIREBASE_URL + '/ users/* FirebaseID * /' + authUser.uid). Если только был способ отключить отметку времени при вызове Push. –