2017-06-29 15 views
1

我正在寫一段代碼來使用角度從firebase數據庫中刪除用戶的信息。我有我需要的用戶的電子郵件ID。數據庫的結構如下。如何從javascript中的firebase數據庫中刪除用戶的信息(即使他/她當前未登錄)?

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

好了,所以我有電子郵件ID,並使用它在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(); 
 
    }) ; 
 
     
 
     
 
    }

但由於某些原因,而不是唯一的密鑰獲得存儲在「用戶id」變量「用戶」被獲得存儲,我不能夠刪除所需要的信息。請幫忙 !

回答

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

寫來回閱讀規則,並根據寫到您的計劃,爲嘗試,現在保持這兩個值真@Schimay – Prags

+0

謝謝,它的工作!你能解釋一下在這種情況下forEach究竟做了什麼? – Schimay

+0

是的,因爲你使用「value」,它會調用父節點,子節點,所以要訪問parentNode的子元素,你必須使用forEach,如果你知道父鍵,那麼就沒有foreach的用法。如果您使用child_added或更改或刪除instaed的值,那麼在這種情況下沒有使用每個值。 – Prags

相關問題