如何使用Vue.js Firebase UID删除用户

时间:2019-08-22 14:25:33

标签: javascript firebase vue.js google-cloud-firestore firebase-authentication

我试图在我的Vue.js Firebase应用程序中实现一个功能,该功能通过UID删除/删除用户。该应用程序设置为通过电子邮件和密码启用用户在Firebase身份验证中的注册。登录后,用户应能够单击删除,以便从Firebase身份验证中删除其电子邮件和密码以及用户数据。到目前为止,我具有以下删除功能:

    async deleteProfile () {
      let ref = db.collection('users')
      let user = await ref.where('user_id', '==',firebase.auth().currentUser.uid).get()
      user.delete()
    }

...但是我得到了user.delete()不是一个函数。如何设置此功能以删除身份验证和数据库中的用户?谢谢!

更新功能

    async deleteProfile () {
      let ref = db.collection('users')
      let user = await ref.where('user_id', '==', firebase.auth().currentUser.uid).get()
      await user.ref.delete()
      await firebase.auth().currentUser.delete()
    }

3 个答案:

答案 0 :(得分:3)

在您的代码中,userDocumentSnapshot类型的对象。如果要删除文档,可以使用user.ref.delete()。它会返回一个承诺,因此您需要等待它。

删除文档也不会在Firebase身份验证中删除用户帐户。如果要删除用户帐户,则必须为此使用Firebase身份验证API。 firebase.auth().currentUser.delete()

答案 1 :(得分:1)

试试这个

<button class="..." @click="deleteProfile(currentUser.uid)">Delete</button>

methods: {
async deleteProfile(dataId) {
      fireDb.collection("yourCollection").doc(dataId).delete()
      .then(() => {
        alert('Deleted')
      })
    }
}

答案 2 :(得分:0)

以道格·史蒂文森(Doug Stevenson)的答案为基础,这是最终起作用的功能。

    async deleteProfile (user) {
      await db.collection("users").doc(user).delete()
      await firebase.auth().currentUser.delete()
    }

await db.collection("users").doc(user).delete()在DOM中的click事件中接受“用户”作为参数,以便在数据库中定位指定用户的文档(我不知道为什么我没有想到这一点await firebase.auth().currentUser.delete()从firebase授权中移除currentUser。