gpt4 book ai didi

javascript - 当indexedDB中的数据库操作成功,但事务立即失败时会发生什么

转载 作者:行者123 更新时间:2023-12-03 02:27:52 25 4
gpt4 key购买 nike

我有一个数据库操作,它将值存储到索引数据库中。我正在寻找我的手术成功的情况的答案。那就是我成功地将我的值存储在数据库中。但是在存储时,如果事务立即失败,存储的数据会怎样?

另外,如果交易失败,是执行transaction.complete()还是执行transaction.onerror()?

最佳答案

您的陈述存在冲突。尽管如此,基础知识是:

  • 事务提供了一段时间,您可以在此期间执行请求
  • 一个事务可以提供多个请求
  • 任何单个请求成功并不意味着交易成功
  • 任何单个请求失败通常意味着交易将不成功
  • 事务是请求和数据库之间的缓冲区,尽管请求可能完成,但在事务完成之前数据库实际上不会被修改
  • 请注意,由于某些 indexedDB 实现会过早地(在将数据写入存储的 IO 操作实际完成之前)报告事务成功,因此这有点令人困惑。

假设您有一个包含两个操作(请求)的事务。假设第一个请求完成。数据是否已保存?不。假设第二个请求已完成。数据已经存储了吗?不。然后交易完成。数据已经存储了吗?是的。

如果存储数据时出现问题,事务将会失败(除了有关某些实现如何“撒谎”过早刷新到磁盘的小技术细节)。

如果事务失败,数据库将保留在事务开始之前的状态,忽略并发事务。

如果请求失败,则事务最终会失败,并且正如刚才所述,数据库将保留在事务开始之前的状态。属于同一失败事务的所有请求都将回滚。

将其想象为在您最喜欢的文本编辑器中打开文档,输入一些单词,然后关闭文档而不保存。

当事务成功完成时,将触发complete 事件。当事务未成功完成时会触发错误事件。

关于javascript - 当indexedDB中的数据库操作成功,但事务立即失败时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863444/

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