【问题标题】:How to delete user with Vue.js Firebase UID如何使用 Vue.js Firebase UID 删除用户
【发布时间】:2019-12-27 21:51:16
【问题描述】:

我正在尝试在我的 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()
    }

【问题讨论】:

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


    【解决方案1】:

    试试这个

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

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

    【讨论】:

      【解决方案2】:

      以 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 事件的“user”作为参数,以便在数据库中定位指定用户的 doc(我不知道为什么我没有早点想到这个! ) await firebase.auth().currentUser.delete() 从 firebase 授权中删除 currentUser。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 感谢您的回复。请参阅上面的更新功能。 firebase.auth().currentUser.delete() 成功删除认证中的用户帐号。但是,user.ref.delete() 返回错误 cannot read property 'delete' of undefined。我应该如何设置let user = 变量来解决这个问题?
        • 这意味着没有人登录。您还应该在调用方法之前检查 currentUser 是否包含任何内容。
        猜你喜欢
        • 2021-01-18
        • 2020-08-15
        • 2020-07-07
        • 2018-10-28
        • 2020-08-26
        • 2021-06-14
        • 2020-03-11
        • 2020-08-24
        • 1970-01-01
        相关资源
        最近更新 更多