我试图在我的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()
}
答案 0 :(得分:3)
在您的代码中,user
是DocumentSnapshot类型的对象。如果要删除文档,可以使用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。