【问题标题】:Dexie.exists() method returns nothing (Dexie.js & IndexedDB)Dexie.exists() 方法不返回任何内容(Dexie.js 和 IndexedDB)
【发布时间】:2016-07-31 04:25:54
【问题描述】:

所以我第一次使用dexie.js 和IndexedDB 构建了一个具有离线支持的小型应用程序。如果本地计算机上已经存在一个数据库,我想打开并使用该现有数据库-->所以我使用Dexie.exists() 检查是否已经存在一个数据库。从 Dexie.js wiki 借用 sample code,我将以下内容添加到我的应用程序中(而不是登录到控制台,我正在使用警报进行测试)

Dexie.exists("myDatabase").then(function(exists) {
  if (exists)
    alert("Database exists");
  else
    alert("Database doesnt exist");
}).catch(function (error) {
    alert("Oops, an error occurred when trying to check database existence");
});

但是,此代码(直接取自示例)对我不起作用。如果数据库不存在,代码会正确返回警报“数据库不存在”。但是,在测试时,我之前创建了一个数据库,然后使用db.delete() 将其删除。现在,当我测试我删除的数据库是否存在时,没有返回任何内容。它应该返回“数据库不存在”,或者至少是一个错误,但事实并非如此。我发现如果我将代码更新为以下内容:

Dexie.exists("myDatabase").then(function(exists) {
  if (exists)
    alert("Database exists");
  else
    alert("Database doesnt exist");
}).catch(
    alert("Oops, an error occurred when trying to check database existence")
);

确实会弹出“糟糕,尝试检查数据库是否存在时发生错误”的警报。不幸的是,我不知道错误是什么,也不知道为什么 catch() 语句仅在我删除匿名函数时才有效。

查看Dexie.exists() 的代码,它测试是否可以open() 相关数据库。据我所知,尝试打开我删除的数据库似乎以与Dexie.exists() 对我来说失败的方式类似的方式失败。似乎我之前在尝试删除数据库时搞砸了一些事情,现在 Dexie 无法正常工作。由于 Dexie 很好地结合了 Promise,我看不到任何我假设的错误正在生成。

我已经花了大约 8 个小时试图解决这个问题,但无济于事。如果有人有使用 Dexie.js 的经验并且可以为我指明正确的方向,我将非常感激。或者,如果有人对 IndexedDB 有经验,也许我可以通过“重置”本地 IndexedDB 来解决问题(如果我在测试时确实搞砸了)。不过,我还没有找到一种方法来做到这一点(据我所知,直接使用 IndexedDB 很痛苦)。

非常感谢您对此的任何帮助!

【问题讨论】:

  • 所以你的.catch(alert()) 正在返回一个假阴性......即使承诺解决了它也会显示一个警报......从你所说的看来,承诺没有解决,因此保持待定状态。可能清除浏览器的缓存会有所帮助。 Like This
  • 乌格。就是这样!我正在使用 Safari,无法找到擦除特定网站存储空间的方法,但进入开发人员工具并清空缓存似乎已经解决了这个问题。这样一个简单的解决方案掌心。谢谢!!如果您重新发布您的评论作为答案,我会将其标记为正确。承诺可能没有失败,而只是无限期地等待,这一见解对我也很有帮助。再次,谢谢你!这是一件简单的事情,但我花了两天的大部分时间试图修复它。

标签: javascript indexeddb dexie


【解决方案1】:

所以你的.catch(alert()) 正在返回一个假阴性......即使承诺解决了它也会显示一个警报......从你所说的看来,承诺没有解决,因此仍然处于待处理状态.清除浏览器的缓存会有所帮助。 Like This

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 2020-01-26
    • 2018-10-21
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多