Javascript exists()方法不返回任何内容(Dexie.js&;IndexedDB)

Javascript exists()方法不返回任何内容(Dexie.js&;IndexedDB),javascript,indexeddb,dexie,Javascript,Indexeddb,Dexie,因此,我第一次使用IndexedDB构建了一个具有离线支持的小应用程序。如果本地计算机上已经存在数据库,我希望打开并使用该现有数据库-->以便使用检查是否已经存在数据库。借用Dexie.js wiki中的,我已经在我的应用程序中添加了以下内容(我不是登录到控制台,而是使用警报进行测试) 但是,这段代码——直接取自示例——对我来说不起作用。如果数据库不存在,代码将正确返回警报“数据库不存在”。然而,在测试时,我之前创建了一个数据库,然后使用删除了它。现在,当我测试我删除的数据库是否存在时,没有返回

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

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

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")
);
确实会弹出警报“Oops,尝试检查数据库存在时出错”。不幸的是,我不知道错误是什么,也不知道为什么只有在删除匿名函数时,
catch()
语句才起作用

查看
Dexie.exists()
的代码,它测试是否可以
open()
相关数据库。据我所知,尝试打开我删除的数据库失败的方式似乎与
Dexie.exists()
失败的方式相似。似乎我以前试图删除数据库时搞砸了什么,现在Dexie不工作了。由于Dexie很好地融入了承诺,我看不到我假设的任何错误正在产生

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


非常感谢你在这方面的帮助

所以您的
.catch(alert())
返回的是假阴性。。。即使承诺解决了,它也会显示警报。。。从你所说的来看,这一承诺似乎没有得到解决,因此仍处于未决状态。清除浏览器的缓存将有所帮助

因此,您的
.catch(alert())
返回的是假阴性。。。即使承诺解决了,它也会显示警报。。。从你所说的来看,这一承诺似乎没有得到解决,因此仍处于未决状态。清除浏览器的缓存可能会有所帮助。Uggg。就这样!我正在使用Safari,找不到删除特定网站存储的方法,但进入开发工具并清空缓存似乎解决了这个问题。这样一个简单的解决办法脸掌心。非常感谢。如果你把你的评论作为答案发表,我会把它标记为正确的。这一承诺可能没有失败,而只是无限期地等待,这对我也很有帮助。再次感谢你!这是一件简单的事情,但我花了两天的大部分时间试图修复它。
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")
);