Firestore数据建模文章和类别

时间:2019-05-21 13:30:22

标签: firebase google-cloud-firestore categories data-modeling conventions

上下文:

我正在Angular中创建一种维基页面。 Wiki页面的总篇幅可能不会超过5000。 我想获得最有效的(页面加载)方式,但是我认为这太陌生了,无法监督一个选项对另一个选项的影响。当然,我也想遵守约定。

问题:

我要在Firestore中分类一些文章。文章应属于一个类别。一个类别可以属于一个类别(作为子类别)。

现在,首选哪种数据模型?为什么呢?

  1. 每篇文章都具有引用类别文档的(参考数据类型)属性吗?

  2. 类别文档具有对文章的引用数组?

Firestore-root
   |
   --- categories (collection)
         |
         --- categoryId (document)
               |
               --- name: "Science" //Simple property
               |

               --- articles ['articleId1', 'articleId2', etc.. (long array)]

  1. 完全不同吗?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 每篇文章都具有引用类别文档的(参考数据类型)属性吗?
  2.   

仅当文章可以属于一个类别时,此结构才会为您提供帮助。

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegory: "Science" //Simple property

无需使用对类别文档的引用。除此之外,要过滤文章,您可以简单地使用where equal调用。

  
      
  1. 类别文档是否包含对文章的引用?
  2.   

如果文章可以属于一个或多个类别,则此结构将为您提供帮助。

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegories: ["Science", "Economy"] //Property of type array

现在要过滤文章,您只需使用where array-contains调用即可。

  
      
  1. 完全不同吗?
  2.   

在构建Cloud Firestore数据库时,两种解决方案都被广泛使用,但是您应该选择哪种解决方案更适合您的应用程序用例。