回答
如果你知道有多少用户有,你可以这样做:
const numberOfUsers = 15;
const randomIndex = Math.floor(Math.random() * numberOfUsers);
var ref = firebase.database().ref('companies/01/users');
ref.limitToFirst(randomIndex).limitToLast(1).once('value').then(snapshot =>
{
var user = snapshot.val();
// do something with the user data
});
但是,如果你不知道有多少孩子有(或有孩子列表存储在其他地方),没有直接的方法来解决这个问题,而没有首先接收树中的所有孩子。有关更多信息,请参见In Firebase, is there a way to get the number of children of a node without loading all the node data?。
知道有多少用户的最佳方法可能是使用Google Cloud Functions来创建脚本以增加表格的计数字段。 –
首先,您已从Firebase中检索所有用户标识。
然后声明一个存储所有userid的数组。下面显示了如何存储userId。
var arr = new Array();
// or var arr = [];
arr.push('user001');
arr.push('user002');
接下来你必须从userId中随机选择一个。
var item = arr[Math.floor(Math.random()*arr.length)];
// item is randomly picked userId
对不起,因为我没有完全告诉你如何实现工作,因为我不使用JavaScript很多。
基本上这是逻辑的工作原理。我希望它可以帮助你:d
我一直在寻找相同的功能,现在我想它可以用新发布的Cloud Firestore完成,但我正在寻找一个简单的解决方案。
btw。整洁的功能limitToFirst + limitToLast不起作用,至少不是在JavaScript(网络)。
我能想出(如果密钥索引“时随机”是不够的),最好的是:
如果你只需要数据随机一次(我的情况,随机一副扑克牌):
在该数字上添加Math.random()和orderByChild()的值,删除键或将startAt()与上次使用的键作为参数一起使用。
var ref = firebase.database().ref('companies/01/users').push();
var randomValue = Math.random();
ref.update({ ..., 'r': randomValue });
...
var ref = firebase.database().ref('companies/01/users')
ref.orderByChild('r').limitToFirst(1).once('value').then(function(snapshot) {
var data = snapshot.val()
...
snapshot.remove()
});
如果数据应采用获得一个随机元素很多时候需要一个已知的指数。
已知编号的指标可以添加
var ref = firebase.database().ref('companies/01/users').push();
ref.update({ ..., 'r': '0001' });
...
var ref = firebase.database().ref('companies/01/users')
ref.orderByChild('r').limitToLast(1).once('value').then(function(snapshot) {
var totalIndex = Object.values(snapshot.val())[0].r;
});
var randomValue = Math.floor(Math.random() * totalIndex);
ref.orderByChild('r').equalTo(randomValue).once('value').then(function(snapshot) {
var data = snapshot.val()
});
- 1. 从Json String获取随机项目
- 2. 从词典获取随机项目?不是随机的
- 3. Firebase Android - 如何随机获取多个项目
- 4. 获得一个随机的项目从
- 5. 如何从Firebase获取项目密钥
- 6. 从Firebase快照获取项目数组
- 7. 从序列中提取随机项目
- 8. 从Objectify实体获取随机条目
- 9. 从目录中随机获取图像?
- 10. 从集合中获取随机条目
- 11. 获取随机目录
- 12. 从Firebase存储中下载随机项目
- 13. 获取从嵌套对象10个随机项目不重复
- 14. 获取从数组随机X项目在JavaScript
- 15. 从Memcache获取随机项目 - Google App Engine
- 16. 从数据库中获取随机和特定项目
- 17. 从Firebase数据库中获取随机值
- 18. 从Firebase数据库中获取随机孩子
- 19. 如何从Firebase数据库获取随机对象?
- 20. 如何从Firebase数据库每次获取随机UId?
- 21. 从Mysql获取随机值
- 22. 随机随机化项目列表
- 23. 从JavaScript Object中选择随机项目?
- 24. 从流中随机收集项目
- 25. 从ArrayList中删除随机项目
- 26. 从NSMutableArray中删除随机项目
- 27. 从集合中随机返回项目
- 28. 从列表中的随机项目
- 29. Firebase - 随机查询
- 30. 获取项目从
看起来不像你可以不用持有用户列表本地 - https://开头计算器。com/a/35086931/782358 –
您可以尝试以数组的形式检索所有用户标识。然后使用Math.random随机挑选其中一个用户。如果你想使用这种方法,我可以告诉你的实现 – UmarZaii
@UmarZaii我真的会赞赏! – Ace