使用Cloud Firestore和React的Todo App数据结构

时间:2018-12-28 18:56:37

标签: firebase google-cloud-firestore

考虑到我正在使用Cloud Firestore和React,以下哪种数据结构最适合简单的ToDo应用?

在我的React状态下,我将ToDos列表用作数组。

选项1

  • 待办事项(集合)
    • 待办事项清单(文档)
      • todo-list-content(数组字段)
        • “待办事项1”
        • “待办事项2”
        • “待办事项3”

enter image description here

选项2

  • 待办事项(集合)
    • todoId1(自动生成的文档ID)
      • 消息:“待办事项1”
    • todoId2(自动生成的文档ID)
      • 消息:“待办事项2”
    • todoId3(自动生成的文档ID)
      • 消息:“待办事项3”

enter image description here

我猜选项2是正确的选择,对吗?谁能详细说明为什么?

使用选项1,我将立即将数组传递给状态,而不必遍历选项2中的QuerySnapshot对象。

谢谢。

1 个答案:

答案 0 :(得分:2)

您猜对了,选择2是正确的选择,但这不是因为您会立即使数组通过以声明状态,而是因为文档有限制。因此,在文档中可以放入多少数据方面存在一些限制。根据有关usage and limits的官方文档:

  

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

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

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

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