gpt4 book ai didi

firebase - flutter : Adding stream of comments 的 QnA 应用程序

转载 作者:行者123 更新时间:2023-12-03 03:00:08 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

1年前关闭。




Improve this question




我正在构建一个论坛应用程序,到目前为止,我已将数据结构化为私有(private)帖子(在每个用户下,因为有一个部分供用户仅查看他们的帖子)和公共(public)帖子(在集合“公共(public)”下,以便每个人都可以查看彼此的帖子)。现在我想实现一个评论系统。我应该如何构建数据?我应该在每个documentid(对于每个帖子)下创建一个子集合“评论”还是在firebase的用户级别创建一个集合“评论”?
[![用户等级' ]
[![在集合'公共(public)'下 ]
[![在集合'public'的子集合中,documentid代表该类别下每个帖子的ID(论坛,反馈和笔记)' ]

最佳答案

这更像是一个基于意见的问题,这意味着有多个解决方案。但是,我的方法与此类似,您可以对其进行修改,或者可能会受到启发以获得更好的解决方案:

  • 您必须在每个帖子下添加 2 个附加字段 private ( bool 值
    )
    users (字符串数组) .
  • 现在您可以使用 Simple queries 查询帖子像例如postRef.where('private', '==', false);这将帮助您始终加载非私密的帖子。
  • 然后您可以使用额外的 Array membership 查询私有(private)帖子,例如postRef.where('private', '==', true).where('users', 'array-contains', 'UID');UID是查看论坛页面的当前登录用户的 UID。当您查询此帖子时,您将能够获取所有私有(private)帖子,但只能获取数组中包含用户 UID 的帖子。
  • 每个帖子都可以有一个 JSON obj 数组,类似于 { timestamp: number, comment: string, UID: string } .此字段将帮助您跟踪特定帖子的所有评论。但是,能够发布和阅读它们的用户将基于上述字段 users 进行控制。和 private .
  • 另一方面,如果论坛预计有数千条评论,那么建议将评论放在单独的数据库中,例如Realtime Database例如。您可以在引用中将它们结构化为 posts/[POST_ID]/comments/ POST_ID是为 Firestore 数据库中的每个文档分配的文件。然后在你的帖子下,而不是 comments作为 JSON obj 数组,您可以完全删除它。因此,当您将根据上述查询字段查询文档时,API 还将返回文档 key (POST_ID),您可以使用它从实时数据库中查询评论。更多信息请访问 Reading and writing data .
  • 此外,您可以在数据库中实现规则,以确保您完全限制查询私有(private)帖子的用户的访问权限。这些规则更复杂,更多信息可以在 Get started with Cloud Firestore Security Rules 中找到。 .但是,即使目前没有规则,您也应该没问题。

  • 话虽如此,请记住,这是用例场景的众多方法之一,并且可能有更多更好的方法来实现相同的方法。

    关于firebase - flutter : Adding stream of comments 的 QnA 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62528367/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com