![](/img/trans.png)
[英]Firebase query delete specific uid Real Time Database (Javascript)
[英]How to delete a user with UID from Real Time Database in Firebase?
数据库结构如下所示
-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下的数据
我也看过这个 ,但这需要用户不断登录(我在localStorage
保存用户ID),如果我写firebase.auth().currentUser
,它在刷新时返回null
。 数据记录和用户帐户是通过社交网络提供商创建的,我可以在Firebase控制台的“ 身份验证和数据库”选项卡上查看数据。
我尝试过这些代码,但它没有做任何事情。
// 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));
最重要的是,我需要从“ 身份验证”选项卡和数据库中同时删除用户(具有特定的UID),只需单击一下。
我知道有一个Firebase Admin SDK,但我正在创建一个单页应用程序 ,我没有任何后端代码。 一切都在前端完成。
任何形式的帮助表示赞赏。
根据@jeremyw和@ peter-haddad的建议,我能够得到我想要的东西。 以下是Firebase云功能上托管的代码
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错误,请为您的fetch()
函数添加mode: 'no-cors'
选项,它将正常工作。
如果要将操作保留在客户端上,则您已找到的用于删除用户登录帐户客户端的链接是您唯一的选择。 通常,出于安全原因,您希望保留服务器上的帐户创建/删除等大部分操作,Firebase会强制解决问题。 如果您最近登录,则只能删除您的帐户,您不能让客户端开始删除旧/随机帐户。
更好的选择是创建自己的云功能来处理与删除用户相关的所有内容。 您必须使用已经为此找到的Admin SDK ...但您可以让Cloud Function执行任意数量的操作 - 它必须从Auth选项卡中删除用户,并删除匹配的数据数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.