javascript - 如何从 Firebase 的实时数据库中删除具有 UID 的用户?

标签 javascript firebase firebase-realtime-database firebase-authentication

数据库结构是这样的

-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() but need to remove data stored under that uid

我也看过 this ,但这需要用户不断登录(我将用户 ID 保存在 localStorage 中),如果我编写 firebase.auth,它会在刷新时返回 null ().currentUser.数据记录和用户帐户是通过社交网络提供商创建的,我可以在 Firebase 控制台的AuthenticationDatabase 选项卡上看到数据。

我试过这段代码,但它什么也没做。

 // 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));

底线是,我需要同时从Authentication 选项卡和Database 中单击一次删除用户(具有特定UID)。

我知道有一个 Firebase Admin SDK但我正在创建一个单页应用程序,而且我没有任何后端代码。一切都在前端完成。

感谢任何形式的帮助。

最佳答案

根据@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() 函数中,它将正常运行。

关于javascript - 如何从 Firebase 的实时数据库中删除具有 UID 的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51246844/

相关文章:

javascript - 输入文件上传多个文件在移动设备上不起作用

javascript - 根据浏览器显示DIV并根据浏览器版本添加类

firebase - 错误 : no entity to update: app - Firestore Cloud Function

javascript - 如何获取写入Firebase的数据的Key/Id?

android - Firebase 数据库错误仅在应用程序发布到谷歌播放后 - android

swift - FirebaseCore 词法或预处理器问题

javascript - 需要 Node for 循环回调

javascript - 我们如何在 Fabric.js 中限制 Canvas 对象的最大宽度和高度

iOS Firebase Crashlytics : Out Of Memory (OOM) Reporting

java - 删除多个父节点上的特定子节点