1

我想編寫代碼從數據庫中刪除用戶。下面是代碼(這兩種方法我利用這一點):如何在firebase中的equalTo()中使用變量?

goToDeleteUser(email) 
 
    { console.log(email); 
 
    let confirm = this.alertCtrl.create({ 
 
     title: 'Are you sure you want to delete this user ?', 
 
     buttons: [ 
 
     { 
 
      text: 'Delete', 
 
      handler: function(email) 
 
      { 
 
      console.log(email); 
 
      this.deleteUser(email); 
 
      } 
 
     } 
 
     ] 
 
    }); 
 
    confirm.present(); 
 

 
    } 
 
    
 
deleteUser(email) 
 
    { console.log(email); 
 
    var userid; 
 
    firebase.database().ref().child('users').orderByChild('email').equalTo(email).on("child_added",(snapshot)=>{ 
 
    userid=snapshot.val().uid}) ; 
 
    console.log(userid); 
 
    firebase.database().ref('users/userid').remove(); 
 
    }

我所面臨的問題是:

  1. 第二「的console.log(電子郵件)'在'按鈕'的'處理程序'中顯示正確的輸出,而'goToDeleteUser(email)'後面緊跟的是'。

2.當我使用'orderByChild'時,我需要將變量'email'傳遞給'equalTo()',它以某種方式不接受。

如何解決這些問題?請幫忙 !

回答

1

你有一個命名衝突:

handler: function(email) <--- Here 
{ 
    console.log(email); 
    this.deleteUser(email); 
} 

處理程序傳回的數據約在您的警報輸入,你沒有。 email已被您的警報所在的功能保留。只需刪除handler中的email參數,即可解決所有問題。

goToDeleteUser(email) 
{ 
    console.log(email); 
    let confirm = this.alertCtrl.create({ 
    title: 'Are you sure you want to delete this user ?', 
     buttons: [ 
     { 
      text: 'Delete', 
      handler: function() <--- remove email has parameter 
       { 
        console.log(email); 
        this.deleteUser(email); 
       } 
     }] 
    }); 
    confirm.present(); 

} 

deleteUser(email) 
{ 
    console.log(email); 
    var userid; 
    firebase.database().ref().child('users').orderByChild('email').equalTo(email).on("child_added",(snapshot)=>{ 
    userid=snapshot.val().uid}) ; 
    console.log(userid); 
    firebase.database().ref('users/userid').remove(); 
}