我有一组静态和预定义的待办事项,我的应用中的每个用户都需要能够在其帐户中设置为已完成。
目前,我在todo项目上使用了一个地图,指定哪些用户已完成任务。我目前的数据模型如下:
- todos (collection)
- todoA (document)
- title, description etc
- completedBy {
uid1: true,
uid2: true,
uid3: false
}
这使我可以轻松地为每个用户设置已完成/未完成的待办事项,并且我可以轻松地过滤/查询。它确实有两个缺点:
我想的可能是在我的用户文档上创建一个类似的地图,将todo ID设置为true / false。这将摆脱上面的两个缺点,但每当我收到我的待办事项时,我需要两个数据库查询,一个用于待办事项,一个用于检查它是否已完成。
有没有更好的方法在Firestore中实现所需的功能?
答案 0 :(得分:1)
如果您遇到最大字段数或最大文档大小,那么通常意味着您应该使用单独的集合来使文档变得如此之大&#34;。< / p>
在您的情况下,意味着您存储&#34;用户已完成任务&#34;在一个单独的集合中。这可以是用户文档的子集合,任务文档的子集合和/或单独的顶级集合。哪一个是正确的取决于您的用例。
NoSQL数据库中没有单一的最佳数据模型。这完全取决于您的使用案例,权衡和一些个人偏好。如需精彩的介绍,请阅读NoSQL data modeling并观看Get to Know Cloud Firestore。