获取 Firebase 中所有已注册用户。

3

我正在使用Node.js中的Firebase数据库。

我只想获取我的Firebase数据库中存在的所有用户。

目前我正在尝试这样做,但它只返回一个单一用户:

var config = {
    apiKey: "AIzaSyBmgbfgdhs4efg9gFo",
    authDomain: "my-test-app.firebaseapp.com",
    databaseURL: "https://my-test-app-default-rtdb.firebaseio.com",
    projectId: "my-test-app",
    storageBucket: "my-die-app.appspot.com",
    messagingSenderId: "534345345",
    appId: "1:534345345:web:cceb16e6vvdd456",
    measurementId: "G-YDZ8Y87GETR",
};

firebase.initializeApp(config);

var ref = firebase.database().ref("users");

ref.once("value", function (snapshot) {

    snapshot.forEach((child) => {

        console.log(child)
    });
});

在Firebase的用户中,我只能看到这个单一用户,但实际上我还有其他用户:
{
  "XG0hYDjhekjdfJX5zLmfUFPQBifkmZA3": [
    "XG0hYDjhekjdfJX5zLmfUFPQBifkmZA3",
    "user1@gmail.com",
    "835457568",
    "Michael James ",
    "user1@gmail.com"
  ]
}

这是我在代码中获取的唯一用户。

我不是这个数据库的所有者,也许这就是原因?

有没有特定的方法来检索所有用户列表?


请编辑您的问题,以显示数据库中“/users”节点下存在的数据(以文本形式,不要截图)。您可以通过在 Firebase数据库控制台上单击溢出菜单(⠇)中的“导出JSON”链接来获取此数据。 - Frank van Puffelen
根据Puf的要求,您应该在此处添加数据的形状(删除敏感信息)。如果Renaud的答案没有帮助,那么意味着问题出在数据库方面,所以如果没有这些信息,我们无法提供帮助。 - samthecodingman
你能生成用户集合吗? - Agni Gari
2个回答

3

我相信这个问题的答案已经自己说明了

在 Firebase 的用户中,我只能看到这一个用户

如果在你的问题中,/users 节点下只有一个用户节点

users {
  "XG0hYDjhekjdfJX5zLmfUFPQBifkmZA3": [
    "XG0hYDjhekjdfJX5zLmfUFPQBifkmZA3",
    "user1@gmail.com",
    "835457568",
    "Michael James ",
    "user1@gmail.com"
  ]
}

这意味着只有一个节点存在 - 因此只能检索到一个节点。

混淆可能在于,虽然Firebase具有可以进行身份验证的users,但这些用户仅存储在Firebase后端服务器中。这并不一定意味着其他用户数据被写入了/users节点。

换句话说,如果应用程序代码没有明确将数据写入/users,则它将不存在。

检查您的身份验证代码,并查看是否在某个时候将数据写入/users - 如果没有,则存在问题。

如果这是问题,我怀疑是这样的,您无法直接从SDK检索Firebase用户列表,但是您可以使用Firebase AdminCloud Functions

这是一个例子:Get All Users

或者(也是我建议的方法),您还可以向应用程序添加代码,以便在用户进行身份验证时,如果其用户节点不存在于/users中,则创建它(使用从Auth参数返回的用户uid作为节点键)


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接