Firebase 总用户数

新手上路,请多包涵

有没有办法在 firebase 中获取所有用户的数量? (通过密码、facebook、twitter 等进行身份验证)所有社交和电子邮件和密码身份验证用户的总数。

原文由 Süha Boncukçu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 340
2 个回答

没有内置方法来获取总用户数。

您可以保留 userIds 的索引并将它们拉下来并对其进行计数。但是,这需要下载所有数据才能进行计数。

 {
  "userIds": {
    "user_one": true,
    "user_two": true,
    "user_three": true
  }
}

然后在下载数据时可以调用 snapshot.numChildren()

 var ref = new Firebase('<my-firebase-app>/userIds');
ref.once('value', function(snap) {
  console.log(snap.numChildren());
});

如果您不想下载数据,您可以使用 transactions 维护总计数。

 var ref = new Firebase('<my-firebase-app>');
ref.createUser({ email: '', password: '', function() {
  var userCountRef = ref.child('userCount');
  userCountRef.transaction(function (current_value) {
    // increment the user count by one
    return (current_value || 0) + 1;
  });
});

然后你可以实时监听用户:

 var ref = new Firebase('<my-firebase-app>/userCount');
ref.on('value', function(snap) {
  console.log(snap.val());
});

原文由 David East 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 云功能

 exports.updateUserCount = functions.auth.user().onCreate(user => {
  return admin.database().ref('userCount').transaction(userCount => (userCount || 0) + 1);
});

请注意,使用自定义令牌创建用户时 不会 触发 Cloud Functions 事件。在这种情况下,您需要执行以下操作:

 exports.updateUserCount = functions.database.ref('users/{userId}').onCreate(() => {
  return admin.database().ref('userCount').transaction(userCount => (userCount || 0) + 1);
});

原文由 giaset 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题