Я пишу фрагмент кода для удаления пользовательской информации из базы данных firebase с использованием углового. У меня есть обязательный идентификатор электронной почты пользователя со мной. Структура базы данных следующая.
users
|_unique key
| |_email:value
| |_tag:value
|_unique key
|_...
Хорошо, поэтому у меня есть идентификатор электронной почты и использование его значения в equalTo() orderByChild() Я получаю пользователь, используя метод "значение". Теперь я хочу получить доступ к этому уникальному ключу пользователя, чтобы удалить его данные. Вот как я это делаю.
deleteUser(email)
{ console.log(email);
var userid;
firebase.database().ref('users').orderByChild('email').equalTo(email).on("value",(snapshot)=>{
userid=snapshot.key;
console.log(snapshot);
console.log(userid)
firebase.database().ref('users/userid').remove();
}) ;
}
Но по какой-то причине вместо уникального ключа, хранящегося в переменной "userid", "пользователи" становятся хранимыми, и я не могу удалить требуемую информацию. Пожалуйста помоги !
Для этого сначала вам нужно проиндексировать ваш адрес электронной почты в правилах, а затем
{
"rules": {
"users": {
".indexOn": "email",
".read" : "auth.uid !== null",
".write" : "auth.uid !== null"
}
}
}
После написания этих правил, теперь используйте эту функцию
deleteUser(email)
{
console.log(email);
var userid;
firebase.database().ref('users').orderByChild('email').equalTo(email).once('value', function(data) { data.forEach(function(child) {
userid = child.key
console.log(userid);
firebase.database().ref('users/'+userid).remove(); })});
}