【问题标题】:How to obtain new document's ID from Firestore's transaction.set()?如何从 Firestore transaction.set() 获取新的文档 ID?
【发布时间】:2021-11-14 08:40:18
【问题描述】:

我有点困惑如何将 .set() 与事务一起使用并获取新文档的 ID。我想保存一个新文档并稍后在交易中使用该 ID。我正在关注this example 如何将文档添加到事务中。

const docRef = collectionRef.doc();
const result = await transaction.set(docRef, input);

不幸的是,根据docstransaction.set()返回transaction实例,而不是像transaction.get()那样的实际documentSnapshot,所以id无法从result获得。文档还说您应该先执行所有读取,然后执行所有写入,所以我不认为任何 set->get->set 组合都是正确的解决方案(无论如何,您也需要 get() 的参考)。

有没有办法在 Firestore 的事务中获取新文档的 ID 而无需生成您自己的 ID?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    嗯,最简单的答案有时是最不明显的。 事实证明,docReftransaction.set() 而得到更新,它包含所需的id。所以要获得id,您只需要:

    const docRef = collectionRef.doc();
    const result = await transaction.set(docRef, input);
    const id = docRef.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 2018-09-03
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 2021-01-05
      • 2019-07-04
      相关资源
      最近更新 更多