首页 > 解决方案 > Firebase:如何在一个查询中更新和获取相同的文档?

问题描述

我正在使用 firebase 为我的应用程序生成收据。要为所有收据生成顺序收据编号,我正在维护一个包含收据总数的集合。

我正在使用firebase“增量”功能将收据总数增加“1”,然后再次查询该文档以获取最新的收据编号。因此,我正在更新并获取相同的文档。

有没有其他更简洁的方式我不必在同一个文档上查询两次?

到目前为止,这是我正在做的事情:

代码:

 admin
     .firestore()
     .collection("totalTransactions")
     .doc("total")
     .update({ total: admin.firestore.FieldValue.increment(1) })
     .then(() => {
         admin
             .firestore()
             .collection("totalTransactions")
             .doc("total")
             .get()
             .then((totalTxn) => {
                 const receiptNo = totalTxn.data().total;
             })
        })

标签: node.jsgoogle-cloud-firestorefirebase-admin

解决方案


安全地做到这一点的唯一方法是使用事务。在该交易中,您将:

  • 阅读total文档。
  • 写回增加的total值。
  • 写收据文件。

这是自动写入成功或失败的唯一方法。


推荐阅读