【问题标题】:Populate nested references in Firebase Firestore在 Firebase Firestore 中填充嵌套引用
【发布时间】:2021-06-19 01:50:49
【问题描述】:

假设我有一个集合“用户”和一个集合“帖子”。每个用户都有一个对他们发布的帖子的引用列表。

每当我检索用户时,我都需要查看他们的帖子纯数据,但它们的行为类似于原始引用,而不仅仅是显示文档的数据。

现在我有一个用户发布了很多帖子。因此,用户文档中的“帖子”字段是对帖子本身的引用数组。我检索用户的数据并返回:

username: "TestUsername",
posts: [
    DocumentReference {
      _firestore: [Firestore],
      _path: [ResourcePath],
      _converter: [Object]
    },
    DocumentReference {
      _firestore: [Firestore],
      _path: [ResourcePath],
      _converter: [Object]
    },
    DocumentReference {
      _firestore: [Firestore],
      _path: [ResourcePath],
      _converter: [Object]
    }
  ],

谢谢。

【问题讨论】:

    标签: node.js firebase google-cloud-firestore


    【解决方案1】:

    您看到的是预期的行为。

    Firebase 不会自动加载您从其他集合中引用的文档。您必须自己在应用程序代码中执行此操作。

    因此,一旦加载了用户文档,您就可以遍历他们的 posts 字段,然后依次加载每个 DocumentReference

    或者,您可以将数据模型更改为:

    • 要么 还将用户 ID 存储在每个帖子中,然后通过 using a query 一次性加载特定用户的所有帖子,
    • 您可以将每个用户的帖子存储在其用户文档下的子集合中,然后从那里加载它们。如果这样做,您仍然可以使用 collection group query 获取/查询所有用户的所有帖子。

    【讨论】:

    • 我已经在每个帖子中保存了用户 ID,如何一次加载特定用户的所有帖子,但看到每个帖子的正确数据?
    • 那将是一个查询:我也为此添加了指向文档的链接,但它类似于db.collection("posts").where("userID", "==", "uidOfUserYouWant")。如果您在执行此操作时遇到问题,请编辑您的问题以显示 the minimal code that reproduces where you are stuck
    • 嘿@JMRBDev 这里还需要什么吗?
    猜你喜欢
    • 2018-12-24
    • 2017-06-17
    • 2019-04-18
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2015-12-06
    • 2020-08-30
    • 2015-10-23
    相关资源
    最近更新 更多