javascript - Dexie.exists() 方法不返回任何内容(Dexie.js 和 IndexedDB)

标签 javascript indexeddb dexie

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

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()) 返回一个假阴性...即使 promise 解决,它也会显示警报...根据你所说的,它会出现 promise 未解决,因此仍处于待处理状态。清除浏览器的缓存会有帮助。 Like This

关于javascript - Dexie.exists() 方法不返回任何内容(Dexie.js 和 IndexedDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524460/

相关文章:

javascript - 使用 javascript 的 call() 理解链式构造函数

javascript - 需要将样式规则设置为 JavaScript 图像随机化脚本

javascript - indexedDB 中按数字/日期排序的意外行为

javascript - IndexedDB 引用错误 : db is not defined

javascript - DexieJS (indexedDB) 链接多个 .where 子句

javascript - 从 Dexie promise 中获取值(value)

javascript - 使对象不可调用

javascript - 如何将 aurelia 版本从 webpack1 升级到 webpack3?

Html5 IndexedDB - 通过其键检索值

javascript - 防止 IndexedDB 中出现重复的 Blob 对象