构建数据库以将好友请求发送给用户尚未发送的人员

时间:2019-06-07 10:44:20

标签: android firebase firebase-realtime-database google-cloud-firestore

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

1 个答案:

答案 0 :(得分:0)

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