【问题标题】:When does Firestore automatically retry plain document writes?Firestore 何时自动重试纯文档写入?
【发布时间】:2022-01-03 08:22:49
【问题描述】:
  1. 如果我对 Firestore 中的文档执行更新操作,并且我确定该文档存在,那么在我无法控制的情况下,可能会产生什么错误?
  2. 如果产生错误,是否会自动重试更新?
  3. 还是仅在没有连接且 Firestore 的离线功能接管时才自动重试此更新?

【问题讨论】:

  • 离线时发生的事务和写入操作是 Firestore SDK 自动重试的唯一写入操作。您还考虑过哪些其他类型的错误?
  • @FrankvanPuffelen 这个链接说离线时交易失败? firebase.google.com/docs/firestore/manage-data/transactions
  • 正确,如果我在此处添加一个额外的逗号可能会更清楚:事务和离线时发生的写入操作是 Firestore SDK 自动重试的唯一写入。但我的问题还是一样:您考虑过哪些类型的错误?
  • @FrankvanPuffelen 好吧,我想这就是我要问你的。例如,如果我更新一个我确定存在的文档,可能会返回哪些错误?

标签: firebase google-cloud-platform google-cloud-firestore


【解决方案1】:
  1. 如果我在 Firestore 中对文档执行更新数据操作,并且我确定该文档存在,那么在我无法控制的情况下,可能会产生什么错误?

可能出现的一个常见错误是 Firebase 服务器由于不正确的安全规则而拒绝操作。这意味着您不允许执行该特定操作。

  1. 如果产生错误,是否会自动重试更新?

不,在线时不会发生这种情况。

  1. 还是仅在没有连接且 Firestore 的离线功能接管时才自动重试此更新?

是的,这确实会发生。离线时发生的所有操作都被添加到队列中。在幕后,Firestore SDK 会尝试重新连接,直到设备重新连接。用户重新连接后,离线时所做的每项更改都将在 Firebase 服务器上更新。换句话说,只要你有适当的规则,所有的更新操作都会在服务器上提交。

【讨论】:

  • 因此,Firestore 实际“重试”的唯一操作是 (1) 未通过但不是因为程序员做错的事情(即底层文档已更改)和 (2)离线时进行的任何写入操作(设置数据、更新数据、批量写入)?
  • 是的,完全正确。
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多