【问题标题】:Firestore: How to Query Multiple Dynamic Values in a CollectionFirestore:如何查询集合中的多个动态值
【发布时间】:2019-09-24 10:50:41
【问题描述】:

我正在构建一个“与朋友一起钓鱼”应用程序,让用户可以创建共享的钓鱼记分牌。每个用户都可以为自己的日志记录分数。我目前将所有分数保存在一个名为 catchLog 的集合中。对于单个用户自己的日志,我只查询记录的 catch 有他的 id 的位置。

每个用户还可以邀请朋友。然后每个用户都有一个带有朋友 ID 的朋友子集合。

但是现在,我正在努力思考如何在过滤用户朋友的同时显示具有不同值的共享记分板 catchLog。

这是数据库结构:

用户收藏:

这里是朋友的子集合(这些ID与那些朋友的uid相同)并且这个人只有一个朋友。 -

这是所有渔获物所在的集合:

我不确定如何解决这个问题。我认为不可能使用要在集合中匹配的值列表来调用 firestore SDK。

我想我可能应该在他打开该视图时获取用户朋友 ID,将它们存储在一个数组中,然后为通过该数组的每个循环进行新的数据库调用,但这感觉不是一个好的解决方案,它会可能需要太长时间。

我还想过有一个云函数,它在朋友之间维护一个记分牌作为它自己的集合,每当有新的捕获时更新它,但这不起作用,因为新朋友可以加入该组并且不会该列表的一部分。

我没有编写任何查询来尝试完成此操作,因为我确信我尚未想到的另一种方法能够完成此操作,因此正在征求建议 :) 非常感谢!

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    我认为维护一个提要列表是个好主意。每当用户成为新朋友时更新列表的云函数(该函数可以将新朋友的所有帖子添加到他们自己的列表中)。

    对于每一个新朋友或取消朋友,云功能都可以在列表中添加或删除帖子。

    出于某种原因,我读到这篇文章是因为您对组有一些概念。重读它你不会,但会把它留在这里以获得可能的灵感。根据您认为每个人将拥有多少朋友,也许您可​​以考虑添加每个朋友的 UID 而不是组 ID:

    您可以在捕获的每条鱼的所有者(我认为是您的 byID 字段)旁边存储所有者所属的组。

    因此,如果我在 A、B 和 C 组中,我未来的所有捕获都将包含 A、B 和 C,并且当您按组查看时,您只需查询数组包含的所有捕获组 ID。

    当用户组建或加入群组时,获取 ID 并将其添加到该用户的所有捕获中(您可以在过去 X 天内进行所有捕获,或者如果不需要较旧的数据并且您有好渔夫!)。

    若要在用户离开群组时更新此丢失信息,您只需调用哪些项目将该用户作为所有者,并拥有一个包含其所在群组的群组数组。提取该群组 ID。

    您只需监听即可完成这 3 个云功能:新捕获、加入群组、离开群组。或更少的功能取决于您存储组的方式!

    【讨论】:

    • 感谢这个 Dan,这很有帮助,我会尝试在这里应用你的一些逻辑,让你知道它是怎么回事 :) 再次感谢
    • 没问题,如果有帮助请告诉我们!
    • 嗨,Dan,我原本不打算将这些作为组,但实际上这样做对我来说更有意义,所以你的建议确实有帮助。我让用户创建新的排行榜并邀请朋友或删除朋友加入董事会。在记录捕获时,用户还可以决定将其发送到板上。板视图 我可以让用户查看他/她订阅的所有板。这样,我什至不需要云功能。非常感谢 :) 对我来说有点头疼,但现在运行良好。
    • 完美!很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 2021-06-10
    • 2020-07-24
    • 2021-12-10
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多