数据库结构如下所示
-LGw89Lx5CA9mOe1fSRQ {
uid: "FzobH6xDhHhtjbfqxlHR5nTobL62"
image: "https://pbs.twimg.com/profile_images/8950378298..."
location: "Lorem ipsum, lorem ipsum"
name: "Lorem ipsum"
provider: "twitter.com"
}
如何删除所有内容,包括-LGw89Lx5CA9mOe1fSRQ
以编程方式键?
我看过这个,但它已经过时且已弃用Firebase:removeUser()但需要删除存储在该uid下的数据 https://stackoverflow.com/questions/34994163/firebase-removeuser-but-need-to-remove-data-stored-under-that-uid
我也看过this https://firebase.google.com/docs/auth/web/manage-users#delete_a_user,但这需要用户不断登录(我将用户 ID 保存在localStorage
)并返回null
如果我写刷新firebase.auth().currentUser
。数据记录和用户帐户是通过社交网络提供商创建的,我可以在验证 and DatabaseFirebase 控制台中的选项卡。
我已经尝试过这些代码,但它什么也没做。
// currentUser has a value of UID from Firebase
// The value is stored in localStorage
databaseChild.child(currentUser).remove()
.then(res => {
// res returns 'undefined'
console.log('Deleted', res);
})
.catch(err => console.error(err));
最重要的是,我需要从验证选项卡并从Database同时一键点击。
我知道有一个Firebase 管理 SDK https://firebase.google.com/docs/auth/admin/manage-users#delete_a_user但我正在创建一个单页应用程序而且我没有任何后端代码。一切都在前端完成。
任何形式的帮助表示赞赏。
通过@jeremyw 和@peter-haddad 的建议,我能够得到我想要的东西。以下是托管在 Firebase Cloud Functions 上的代码
const functions = require('firebase-functions'),
admin = require('firebase-admin');
admin.initializeApp();
exports.deleteUser = functions.https.onRequest((request, response) => {
const data = JSON.parse(request.body),
user = data.uid;
// Delete user record from Authentication
admin.auth().deleteUser(user)
.then(() => {
console.log('User Authentication record deleted');
return;
})
.catch(() => console.error('Error while trying to delete the user', err));
// Delete user record from Real Time Database
admin.database().ref().child('people').orderByChild('uid').equalTo(user).once('value', snap => {
let userData = snap.val();
for (let key of Object.keys(userData)) {
admin.database().ref().child('people').child(key).remove();
}
});
response.send(200);
});
另外,如果您遇到 CORS 错误,请添加mode: 'no-cors'
选项给你的fetch()
功能并且它将毫无问题地工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)