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

Posted

技术标签:

【中文标题】如何使用 Vue.js Firebase UID 删除用户【英文标题】:How to delete user with 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()
    

【问题讨论】:

【参考方案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 是否包含任何内容。

以上是关于如何使用 Vue.js Firebase UID 删除用户的主要内容,如果未能解决你的问题,请参考以下文章

如何删除用户点击按钮? - Firebase - Vue.js

我可以通过哪些方法正确地在 Firebase Firestore 中的数据结构来建模多对多关系以检索 vue js 中的特定 uid

如何使用 firebase / vue.js 实时删除功能

vue.js的“Firebase + Validation Example”中如何使用mysql作为数据持久化后端?

如何从 Firebase 存储中删除 Vue.js 组件图像?

Vue.js:从 Firebase 存储中检索数据后如何异步加载模板?