Как удалить информацию о пользователе (даже если он / она в настоящее время не вошел в систему) из базы данных Firebase в JavaScript?

1

Я пишу фрагмент кода для удаления пользовательской информации из базы данных 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", "пользователи" становятся хранимыми, и я не могу удалить требуемую информацию. Пожалуйста помоги !

Теги:
firebase
firebase-realtime-database

1 ответ

2
Лучший ответ

Для этого сначала вам нужно проиндексировать ваш адрес электронной почты в правилах, а затем

{
  "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(); })});
}
  • 0
    напишите правила для чтения и записи в соответствии с вашей схемой, попробуйте, теперь держите оба значения true @Schimay
  • 0
    Спасибо, это сработало! Не могли бы вы объяснить, что именно forEach делает в этом случае?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню