如何使用 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
vue.js的“Firebase + Validation Example”中如何使用mysql作为数据持久化后端?