【问题标题】:Get parent document for each item in Firebase collectionGroup获取 Firebase collectionGroup 中每个项目的父文档
【发布时间】:2019-12-10 21:35:31
【问题描述】:

我有 SQL 背景,我正在努力研究文档存储。对于 Firebase 数据库结构如下:

  • 约翰(文档)
    • 餐厅点评(收藏)
      • 评论 1(文档)
      • 评论 2(文档)
  • 保罗(文档)
    • 餐厅点评(收藏)
      • 评论 3(文档)
      • 评论 4(文档)

我正在使用 CollectionGroup 来获取特定餐厅的所有评论(餐厅 ID 在评论文档中)。这很好用。我还想获取有关用户的一些元数据。在遍历返回的每条评论时,我可以通过辅助查询来实现这一点:

restaurantReviewsSnapshot.forEach(reviewSnap => {
   reviewSnap.ref.parent.parent.get().then(reviewerSnap => {
   ...

但是,这不是有效的。是否可以通过某种联接操作一次性获取这些相关数据?

【问题讨论】:

标签: javascript angular firebase google-cloud-firestore


【解决方案1】:

就您而言,NoSQL 世界中的一种经典方法是对数据进行非规范化,使您的查询易于构建和执行。

更具体地说,这意味着在每个 Review 文档中,您都将复制其作者的数据。

这种方法的一个副作用是您需要保持值同步(即用户/作者文档中的值和评论文档中的值)。如果作者文档被修改,则可以通过触发云函数来完成此同步。


同样,您不应该害怕重复数据和非规范化您的数据模型。这是一篇关于 NoSQL 数据建模方法的“著名”帖子:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2019-07-17
    • 2020-01-09
    • 2020-03-29
    • 2021-01-23
    • 2021-03-23
    相关资源
    最近更新 更多