Используемый вами запрос получает все /users
, а не только одного пользователя с соответствующим адресом электронной почты.
Я предположил, что у вас есть доступ к адресу электронной почты, и он назначен переменной userEmailAddress
.
this.usr = this.afd.list('/users', ref => ref
.orderByChild('usrEmail')
.equalTo(userEmailAddress)
)
.snapshotChanges()
.map(changes => {
return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
})
.first()
.subscribe(snapshots => {
snapshots.forEach(snapshot => {
console.log('Snapshot Key: ', snapshot.key);
console.log('Snapshot Payload: ', snapshot.val());
});
});
Вывод snapshot.key
будет ключом, который вы пытаетесь получить.
Однако в вашем сценарии есть лучший способ сохранить адрес электронной почты клиента. Вы можете создать путь, содержащий идентификатор пользователя в базе данных, например:
Я предполагаю, что у вас есть доступ к uid через authService. this.authService.uid
this.afd.object(`/users/${this.authService.uid}`).update({
email: userEmailAddress
});
uid
пользователя никогда не изменится, и он уникален для этого пользователя, поэтому вы можете создать с ним пути к базе данных для легкого доступа.