Firebase 使用云Firestore和React的Todo应用程序数据结构

Firebase 使用云Firestore和React的Todo应用程序数据结构,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,考虑到我使用的是Cloud Firestore和React,下面哪种数据结构最适合简单的ToDo应用程序 我正在使用TODO列表作为处于React状态的数组 选项1 待办事项(收集) 待办事项清单(文件) 待办事项列表内容(数组字段) “待办事项1” “待办事项2” “待办事项3” 选项2 待办事项(收集) todoId1(自动生成文档Id) 信息:“待办事项1” todoId2(自动生成文档Id) 信息:“待办事项2” todoId3(自动生成文档Id) 信息:

考虑到我使用的是Cloud Firestore和React,下面哪种数据结构最适合简单的ToDo应用程序

我正在使用TODO列表作为处于React状态的数组

选项1

  • 待办事项(收集)
    • 待办事项清单(文件)
      • 待办事项列表内容(数组字段)
        • “待办事项1”
        • “待办事项2”
        • “待办事项3”

选项2

  • 待办事项(收集)
    • todoId1(自动生成文档Id)
      • 信息:“待办事项1”
    • todoId2(自动生成文档Id)
      • 信息:“待办事项2”
    • todoId3(自动生成文档Id)
      • 信息:“待办事项3”

我猜选项2是正确的选择,对吗?有人能详细说明原因吗

使用选项1,我可以直接将数组传递到状态,而不必在选项2中迭代QuerySnapshot对象


谢谢。

您猜对了,选项2是正确的选择,但这并不是因为您可以直接将数组传递给state,而是因为文档有限制。因此,当涉及到可以将多少数据放入文档时,存在一些限制。根据官方文件,关于:

文档的最大大小:1 MiB(1048576字节)

如您所见,单个文档中的数据总量限制为1 MiB。当我们谈论存储文本时,您可以存储很多内容,但随着数组变大,请注意此限制

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

因此,将TODO存储为集合中的文档是最佳选择,因为没有限制。您可以存储任意数量的文档