【问题标题】:Retrieve document id when mapping through a collection通过集合映射时检索文档 ID
【发布时间】:2020-09-24 00:11:02
【问题描述】:

目标:检索文档 id 值,以便我可以将其传递给 doc()

我的文档结构如下:

imageUrl: HTTP://wwww.google.com/images/23123
status: true

我正在通过我在 Firestore 中的收藏映射...

 {artworks.map((artwork) => (
          <ReviewCard
            imageUrl={artwork.imageUrl}
          />
        ))}

这是我获取此文档 id 的代码...

const handleApproval = (e) => {
    db.collection("artworks").doc(doc.id).update({ status: "true" });
  };

我不断收到错误'doc' is not defined no-undef

当我将doc.id 与实际的文档字符串放在一起时,它可以工作。

如何自动拉取doc id?

【问题讨论】:

  • 我不清楚您所说的“自动提取文档 ID”是什么意思。要么您知道该值并将其传递给doc(),要么您对整个集合进行查询。
  • 你好道格!好的,所以我通过查看 firebase 中的文档知道 id。但是,当我遍历整个集合时,我想将文档 ID 插入到 doc.id 字段中。我应该在创建集合时自动生成一个 id 而忽略 firebase 自动生成的那个吗?
  • 您是说您希望每个文档的 ID 作为该文档中的一个字段吗?如果是这样,那从您的问题中根本不清楚。你可能想重写它来解释你的目标是什么。
  • 对不起,让我澄清一下。我想要文档 id 的值,所以我可以将它传递给 doc()
  • 好吧,正如我所说,您要么提前知道文档 ID,要么进行查询。 Firestore 怎么知道您要更新什么文档?你将不得不以某种方式提供它来处理Approval,但我们看不到它是如何调用的,或者你当时正在处理什么数据。如果您无法将其提供给 handleApproval,那么您将陷入困境,您需要完全重新考虑您希望此代码如何工作。

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

根据对 cme​​ts 的讨论,将此作为社区 Wiki 发布。

如前所述,您要么知道文档 ID,要么执行查询以收集 ID,以便进一步使用它。这样,您将能够更新所需的确切文档。获得 ID 后,您会将其提供给您的 handleApproval,以便正确更新。如前所述,最好和最完整的选择是在 handleApproval 之前查询 ID,然后使用查询 doc() 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多