【问题标题】:Why does Dexie return old data after modify() in transaction()?为什么 Dexie 在 transaction() 中 modify() 后返回旧数据?
【发布时间】:2021-07-15 16:35:20
【问题描述】:

我对数据库进行了更改并尝试读取更新的数据,但我使用以下代码获取了旧数据:

kera.db.transaction('rw', kera.db.settings, async () => {
    await kera.db.settings.where('name').equals('background')
        .modify({[setting]: value});
    await kera.db.settings.get('background', (data) => {
      console.log(data);
    });
  });

如果我稍后调用相同的 get() 函数,这次我会得到更新的数据。

【问题讨论】:

    标签: javascript indexeddb dexie dexiejs


    【解决方案1】:

    我认为代码中可能存在其他问题。尝试捕捉被拒绝的交易承诺,看看你是否遇到了失败。还要验证闭包变量设置是否正确以及该值是否正确。通过该示例,您假设您的主键是name。如果不是这种情况,您需要从 db.settings.get('background') 更改为 db.settings.get({name: 'background'})。我试图重现这个问题,但它对我有用:

    https://jsitor.com/CV_2VhVvB

    【讨论】:

    • 承诺没有被拒绝,也没有捕获到错误。另外,是的,主键是name。由于您的代码与我的代码相似并且运行良好,因此我将检查代码的不同部分。
    【解决方案2】:

    我清除了页面数据,它突然开始正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-27
      • 2020-06-23
      • 2023-03-04
      • 2023-03-27
      • 2013-03-04
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多