使用“array-contains”查询 Cloud Firestore 社交媒体结构

2024-04-06

我有一个由称为“民意调查”的集合组成的数据结构。 “民意调查”有几个具有随机生成 ID 的文档。在这些文档中,还有一个名为“答案”的附加集合集。用户对这些民意调查进行投票,所有投票都写入“答案”子集合中。我在“answers”节点上使用 .runTransaction() 方法,其想法是该子集合(对于任何给定的民意调查)不断由用户更新和写入。

我一直在读关于Firestore 的社交媒体结构 https://stackoverflow.com/questions/46979375/firestore-how-to-structure-a-feed-and-follow-system。不过,我最近遇到了 Firestore 的一项新功能,即“array_contains”查询选项。

虽然上面的帖子参考讨论了社交媒体结构的“以下”提要,但我有不同的想法。我设想用户写入(投票)到我的主民意调查节点,因此创建另一个“以下”节点并让用户写入此节点以更新民意调查投票计数(使用云函数)似乎效率非常低,因为我必须不断复制来自正在计票的主节点。

“array_contains”查询是否是社交媒体结构可扩展性的另一个实用选择?我的想法是:

  1. 如果用户 A 关注用户 B,请写入我的“用户”节点中名为“关注者”的直接数组子级。
  2. 在用户 B 创建任何轮询之前,用户 B 的设备会从 Firestore 读取“followers”数组,以获取关注的所有用户的列表,并将其填充到客户端的 Array 对象中
  3. 然后,当用户 B 编写新的民意调查时,将“followers”数组添加到民意调查中,这样用户 B 的每个新民意调查都会附加一个数组,其中包含关注的用户的所有 ID。

“array_contains”查询有哪些限制?在 Firebase 中存储包含数千个用户/关注者的数组是否实用?


“array_contains”查询是否是社交媒体结构可扩展性的另一个实用选择?

是的当然。这就是 Firebase 创建者添加此功能的原因。

看到你的结构,我认为你可以尝试一下,但要回答你的问题。

“array_contains”查询有哪些限制?

对于存储的数据类型没有限制。

在 Firebase 中存储包含数千个用户/关注者的数组是否实用?

与实用与否无关,与其他类型的限制有关。问题是文件有限制。因此,当您可以在文档中放入多少数据时,存在一些限制。根据官方文档有关用途和限制 https://firebase.google.com/docs/firestore/quotas:

文档的最大大小:1 MiB(1,048,576 字节)

如您所见,单个文档中的数据总量限制为 1 MiB。当我们谈论存储文本时,您可以存储很多内容。因此,就您而言,如果您只存储 ids,我认为这不会有问题。但恕我直言,随着您的阵列变得越来越大,请小心这个限制。

如果您在数组中存储大量数据并且这些数组应该由大量用户更新,那么您需要注意另一个限制。因此,每个文档每秒只能写入 1 次。因此,如果您遇到许多用户都尝试同时向同一文档写入/更新数据的情况,您可能会开始看到其中一些写入失败。因此,也要小心这个限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“array-contains”查询 Cloud Firestore 社交媒体结构 的相关文章

随机推荐

  • Web 服务必须注册吗?

    我正在学习网络服务 我读过的大多数资源都讨论了如何在网络服务准备好供其他人使用时对其进行注册 使用该服务是否需要注册网络服务 例如 假设我在公司 Intranet 上有一个 Web 应用程序 并且我创建了另一个 Web 服务应用程序 该应用
  • 在程序集“”中发现了不止一种迁移配置类型。指定要使用的名称。关于添加迁移

    在包管理器控制台中 我正在尝试更新我的数据库 当我输入这个命令时 add migration Migration1 我明白了 在程序集中发现了不止一种迁移配置类型 我的项目 POCO 指定要使用的名称 我用谷歌搜索了这个错误 我得到了这个
  • 如何从 XMLHttpRequest 获取进度

    是否可以获得 XMLHttpRequest 的进度 上传的字节数 下载的字节数 当用户上传大文件时 这对于显示进度条很有用 标准 API 似乎不支持它 但也许任何浏览器中都有一些非标准扩展 毕竟 这似乎是一个非常明显的功能 因为客户端知道上
  • sharepoint aspx 页面的隐藏代码在哪里?

    毫无疑问 我在这里遗漏了一些非常明显的东西 但我是 sharepoint 的新手 所以请耐心等待 我已经成功添加了一个母版页 创建了一个内容类型 并为我的自定义内容类型创建了一个 aspx 页面 但我找不到它的 cs 文件 在共享点解决方案
  • 扩展 maxLines 属性时自动滚动多行 TextFormField

    我正在实现一个 TextFormField 其 maxLines 属性设置为 3 当用户从第四行开始时 如何使 TextFormField 向下滚动 目前 光标不再可见 直到用户手动向下滚动 有没有办法自动执行此操作 这种行为实际上在 fl
  • 动态算法与贪婪算法:关于 Neil G 对同一主题的回答的争论

    我试图理解动态算法和贪婪算法之间的区别 并且这个答案由Neil G很有帮助 https stackoverflow com a 13713735 2715083但是 他的一句话却引起了评论区的热议 动态规划和贪心算法之间的区别在于 动态规划
  • 将字符串替换为具有不同 html 但相同文本的匹配字符串

    String1 img alt src http abcghgds com justin bieber ferns 650 430 jpg width 650 height 430 Have you seen a href http www
  • Makefile - 为什么读取命令不读取用户输入?

    我的 Makefile 中有以下代码 Root Path echo What is the root directory of your webserver Eg Server htdocs read root path echo root
  • 为什么“无法翻译 LINQ 表达式 'x'”?我没有使用“Where()”

    当我执行以下代码时 出现错误 System InvalidOperationException LINQ 表达式 DbSet Where u gt u NormalizedEmail ToLower 0 u PasswordHash Seq
  • 类实例作为静态属性

    Python 3 不允许您在其主体内引用类 方法中除外 class A static attribute A def init self 这就提出了一个NameError在第二行 因为 A is not defined 备择方案 我很快找到
  • 如何处理弹性搜索结构化查询中的通配符

    我的用例需要使用尾随通配符查询我们的弹性搜索域 我想了解您对在查询中处理此类通配符的最佳实践的看法 您认为添加以下子句对于查询来说是一个很好的做法吗 query query string query attribute postfix an
  • 检测图中的所有圆圈

    我有一个存储在 Map 数据结构中的有向图 其中键是节点的 ID value 是key节点所指向的节点的nodeId数组 Map
  • 如何在 T-SQL 中将 varchar 转换为 datetime?

    我正在尝试填充来自的数据table1 to table2 两者具有相同的列数 中的所有列table1属于类型varchar 中的列table2可能varchar int or datetime etc 我的问题是如何在填充过程中进行转换 这
  • 更改重复产品的 Magento 默认状态

    我安装了 Magento 商店 当后端复制产品时 Magento 默认将其状态设置为禁用 我不希望发生这种情况 复制的产品也应该从原始产品复制其状态 In 这个帖子 https stackoverflow com questions 465
  • Asp.net core 2 CORS预检请求响应缓慢

    我们有一个 asp net core 2 服务器 在性能测试中 当我们有几个 例如数十个 待处理请求时 新的 CORS 预检请求将保持待处理状态 看来asp net core对管道中的并发请求数有一定的限制 并且该限制的默认值非常低 是否有
  • Laravel 事件超出 Pusher 允许的限制

    我的 Laravel 应用程序中有一个事件 对于特定记录 它超出了 Pusher 允许的最大限制 10240 字节 Laravel 序列化 Event 类上的每个公共属性是否正确 如果是这样 我怀疑序列化模型不应超过 10kb 限制 但无论
  • 必须满足哪些条件才能通过 WPF DataGrid 编辑自定义集合?

    In short 我有自定义集合 我想使用数据网格显示和编辑 GUI 方式 第一部分 展示 有效 第二个 编辑 则不然 第一次尝试交互式编辑 由用户 时 我收到错误异常 EditItem is not allowed for this vi
  • 使外部 div 自动与其浮动内容高度相同

    我想要外层div 用黑色包裹它div漂浮在其中 我不想用style height 200px in the div与outerdivid 因为我希望它自动成为其内容的高度 例如 浮动divs div style border 1px sol
  • 无法打开与您的身份验证代理的连接

    我遇到了以下错误 git push heroku master Warning Permanently added the RSA host key for IP address 50 19 85 132 to the list of kn
  • 使用“array-contains”查询 Cloud Firestore 社交媒体结构

    我有一个由称为 民意调查 的集合组成的数据结构 民意调查 有几个具有随机生成 ID 的文档 在这些文档中 还有一个名为 答案 的附加集合集 用户对这些民意调查进行投票 所有投票都写入 答案 子集合中 我在 answers 节点上使用 run