首页 > 解决方案 > 构造数据库以向用户尚未发送的人发送好友请求

问题描述

我需要实现一个 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);

标签: androidfirebasefirebase-realtime-databasegoogle-cloud-firestore

解决方案


Firebase 的查询模型无法通过缺少属性进行过滤。您将不得不为非朋友存储大量重复数据(即使按照 NoSQL 标准,这在此处似乎也不合理),或者加载所有用途的最高分,然后排除非朋友客户端。


推荐阅读