android - 构造数据库以向用户尚未发送的人发送好友请求
问题描述
我需要实现一个 Firebase 好友请求系统。而且它不是一个正常的友谊系统。所以我有一个用户列表。每个用户都有一个“分数”字段。并且用户应该能够向得分最高的用户发送请求。并且不允许重复请求。
所以要做到这一点,我必须使用“orderBy(“score”)”查询得分最高的用户。但问题是我无法找到他们是否已经以这种方式成为朋友。
friends = {
"userId 1": {
"userID 2": true,
"userId 4": true,
"userId 5": true,
"userID 15": true
},
"userId 2": {
"userID 1": true,
"userID 3": true,
"userID 4": true
}
}
users = {
"userID 1": {
"name": "alex",
"score": 12
},
"userID 2": {
"name": "alex",
"score": 40
},
"userID 3": {
"name": "alex",
"score": 30
},
"userID 4": {
"name": "alex",
"score": 9
}
}
所以我要求一种方法来过滤一组特定的**非朋友**,根据他们相对于特定用户的分数排序。
任何帮助是极大的赞赏。
目前,我可以按分数排序。但不能过滤非好友。
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference("users");
Query myQuery = myRef.orderByKey("score).limitToFirst(20);
解决方案
Firebase 的查询模型无法通过缺少属性进行过滤。您将不得不为非朋友存储大量重复数据(即使按照 NoSQL 标准,这在此处似乎也不合理),或者加载所有用途的最高分,然后排除非朋友客户端。
推荐阅读
- python - 如何在 python 脚本中设置变量并在每次脚本运行时更改它们?
- python - 具有不同标记大小和信息图例的 Seaborn 散点图
- python - 如何通过爬虫获取简单信息
- python - 具有动态内容的 Python 解析页面
- c# - 如何在C#中将整数序列转换为序数
- linux - 如何将多个命名空间与同一个命名空间linux连接起来
- android - file.createNewFile() 给出 java.io.IOException: Not a directory
- javascript - 如何在表单提交后更改 HTML 表格数据值
- powershell - VM 上的 Powershell 脚本作为计划任务
- networking - 无法使用 Salstack 状态文件编译数据