Firebase 函数未使用 FieldValue.increment 更新 Firestore 文档而没有错误日志

问题描述 投票:0回答:1

我在“收据”集合中创建文档时触发了 Firebase 函数。该函数使用 FieldValue.increment 更新“projects”集合中相关文档中的totalReceipts 字段。

相关代码如下:

const newReceipt = parseInt(data.amount);
    await projectDocRef.update({
      totalReceipts: admin.firestore.FieldValue.increment(newReceipt),
      updatedUserId: data.userId,
    });

问题: 在一个实例中,totalReceipts 字段未针对文档创建进行更新,但函数中未记录任何错误。同一项目的另外两个更新工作正常。

问题: 使用 FieldValue.increment 的 Firebase 函数是否有可能无法更新totalReceipts而不记录错误?如果是这样,潜在的原因可能是什么?

我检查了 Firebase 函数代码,以确保它正确处理收据文档的创建并更新相应项目文档中的totalReceipts 字段。我检查了Firebase功能日志,但没有发现任何错误,这让我相信更新应该已经成功了。

我预计 Firestore 文档中的totalReceipts 字段会按新创建的收据中指定的金额递增。然而,在一种情况下,即使没有记录错误,该字段也没有更新。对于与同一项目相关的其他收据,该函数可以正常工作,因此我不确定为什么在这种特殊情况下它会失败,并且没有任何错误消息。

收据收集

Receipts Collection: Displaying the totalReceipts field .

项目集合 Projects Collection: Displaying the totalReceipts field .

javascript firebase google-cloud-firestore google-cloud-functions
1个回答
0
投票

我的疑问是,totalReceipts: admin.firestore.FieldValue.increment(newReceipt) 是否有可能因竞争条件或任何其他原因而失败。

不,不会因为竞争条件而失败。 增量应该在所有情况下始终发生,除非出现某些特殊情况,例如违反安全规则或其他权限错误,甚至可能是整数溢出。 如果出现故障,如果编写正确,您的错误处理代码将拾取该故障。 在任何情况下,Firestore 都不会默默失败。

© www.soinside.com 2019 - 2024. All rights reserved.