按社交网络 iOS 应用程序中的相互连接排序,数据存储在 firestore 中

Sort by mutual connections in social-networking iOS application with data store in firestore

我正在编写一个应用程序,该应用程序将帮助用户根据许多属性(即位置、兴趣等)相互联系。我正在使用 firebase firestore 来存储我所有的用户数据,其中包含姓名、家乡、兴趣、类 和连接等字段,连接是他们连接到的用户的 UUID 列表。

当我建议其他用户与用户建立联系时,我想通过他们相互联系的数量来做到这一点,但这并不是数据库中明确的字段,因为我必须计算和维护对于每个用户相对于其他每个用户。有没有一种方法可以使用 firestore 通过计算的 属性 而不是数据库中的字段来查询或排序,或者另一种存储相互连接的方法?

我知道理论上我可以从数据库中提取所有用户,然后在本地计算相互连接的数量并对数组进行排序,但这听起来非常低效。

我已经搜索了现有的解决方案,例如 facebook 或 linkedin 如何推荐朋友或您可能认识的人,但我找不到关于他们如何做到这一点的任何具体答案,但这些公司也没有使用 firestore。我希望过去有人遇到过这个问题,可以帮助我。

无法对 Firestore 查询中的数据执行计算。如果您想在计算值中排序或过滤,则必须将该值存储在数据库中。

通常您可以这样做:

  1. 当您从客户端写入数据时,您也会更新计算值。
  2. 在写入数据时触发的云函数中,然后更新计算值。
  3. 在定期运行的 Cloud Functions 中,然后更新所有已修改数据的计算值。