如何从javascript中的firebase数据库删除用户的信息(即使他/她当前没有登录)?

时间:2017-06-29 18:02:07

标签: javascript firebase firebase-realtime-database

我正在编写一段代码,使用angular从firebase数据库中删除用户的信息。我有我所需的用户电子邮件ID。数据库的结构如下。



users
  |_unique key
  |      |_email:value
  |      |_tag:value
  |_unique key
         |_...




好的,所以我有了电子邮件ID并在orderByChild()的equalTo中使用了它的值我得到了用户使用' value'方法。现在,我想访问此用户的唯一密钥,以便删除他/她的数据。这就是我的方法。



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'变量,'用户'正在存储,我无法删除所需的信息。请帮忙 !

1 个答案:

答案 0 :(得分: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(); })});
}