gpt4 book ai didi

javascript - 如何在 Firestore 中的交易期间获取新创建文档的 ID?

转载 作者:行者123 更新时间:2023-12-05 02:05:33 26 4
gpt4 key购买 nike

我正在阅读 Transaction 上的文档操作,我认为 t.set() 方法的工作方式类似于 Add data 中记录的 docReference.set()页面。

令我惊讶的是,它没有:

const newCustomerRef = db.collection('customers').doc();

await db.runTransaction(t => {
const res = t.set(newCustomerRef, formData)
console.log(res)
});

上面的res对象(t.set()的返回值)包含了一堆props,看起来很乱,看起来不像是有意的以便您与他们一起工作。

有什么方法可以在事务中获取新创建文档的 ID?

更新

我想要实现的是一次进行多个数据操作,如果失败则将所有内容还原。

根据 Doug 的回答,如果 newCustomerRef 已经包含 ID,看来我缺少的是在 catch block 期间删除它以防事务失败:

try {
const newCustomerRef = db.collection('customers').doc();

await db.runTransaction(t => {
const res = t.set(newCustomerRef, formData)
console.log(res)
});
} catch (e) {
newCustomerRef.delete()

//...error handling...
}

这是一种手动操作,感觉有点老套。有没有办法在交易失败时自动删除?

最佳答案

newCustomerRef 已包含 ID。它是在事务开始之前调用 doc() 时在客户端随机生成的。

const id = newCustomerRef.id

如果事务因任何原因失败,数据库将保持不变。

关于javascript - 如何在 Firestore 中的交易期间获取新创建文档的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63462590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com