Javascript Firebase用户总数

Javascript Firebase用户总数,javascript,angularjs,firebase,angularfire,firebase-authentication,Javascript,Angularjs,Firebase,Angularfire,Firebase Authentication,有没有办法获取firebase中所有用户的计数?(通过密码、facebook、twitter等认证)所有社交和电子邮件及密码认证用户的总数 没有内置的方法来获取用户总数 您可以保留用户ID的索引,并将其下拉并计数。然而,这需要下载所有数据才能获得计数 { "userIds": { "user_one": true, "user_two": true, "user_three": true } } 然后在下载数据时,可以调用snapshot.numChildre

有没有办法获取firebase中所有用户的计数?(通过密码、facebook、twitter等认证)所有社交和电子邮件及密码认证用户的总数

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

您可以保留用户ID的索引,并将其下拉并计数。然而,这需要下载所有数据才能获得计数

{
  "userIds": {
    "user_one": true,
    "user_two": true,
    "user_three": true 
  }
}
然后在下载数据时,可以调用
snapshot.numChildren()

var ref=newfirebase('/userid');
参考一次(“值”,功能(捕捉){
console.log(snap.numChildren());
});
如果您不想下载数据,可以使用维护总计数。

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=新火基(“”);
ref.createUser({电子邮件:“”,密码:“”,函数(){
var userCountRef=ref.child('userCount');
userCountRef.事务(函数(当前值){
//将用户计数增加1
返回值(当前|u值| 0)+1;
});
});
然后,您可以实时监听用户:

var ref = new Firebase('<my-firebase-app>/userCount');
ref.on('value', function(snap) {
  console.log(snap.val());
});
var ref=newfirebase('/userCount');
参考on(值),功能(捕捉){
console.log(snap.val());
});

这是一个用于此目的的javascript模块-

在单行中,它的作用是-

在Firebase web应用程序中保留在线用户列表(和计数)-按独立房间或全球范围

要统计使用此模块的所有用户,请执行以下操作:

firebase.initializeApp({...});
var onlineUsers = new Gathering(firebase.database());
gathering.join();

// Attach a callback function to track updates
// That function will be called (with the user count and array of users) every time user list updated
gathering.onUpdated(function(count, users) {
    // Do whatever you want
});
使用:

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

exports.updateUserCount = functions.database.ref('users/{userId}').onCreate(() => {
  return admin.database().ref('userCount').transaction(userCount => (userCount || 0) + 1);
});
更新2021 我无意中发现了这个问题,想与大家分享三种获取注册用户总数的方法


所以你说我不能真正依赖firebase的用户身份验证系统,我必须创建一些东西来随时保存新的用户ID。我理解正确吗?firebase身份验证只对用户进行身份验证。如果你想对这些数据做些什么,请将其存储在你的firebase数据库中。好的,很公平。我想至少访问一次ast所有用户ID或类似的东西:)我接受这作为交易的答案,你不能确保用户(黑客)如何操纵这个数字
exports.updateUserCount = functions.auth.user().onCreate(user => {
  return admin.database().ref('userCount').transaction(userCount => (userCount || 0) + 1);
});
exports.updateUserCount = functions.database.ref('users/{userId}').onCreate(() => {
  return admin.database().ref('userCount').transaction(userCount => (userCount || 0) + 1);
});