Dexie.exists() 方法 returns 无(Dexie.js & IndexedDB)

Dexie.exists() method returns nothing (Dexie.js & IndexedDB)

所以我正在使用 Dexie.js wiki 中的 dexie.js and IndexedDB for the first time. If a database already exists on the local machine, I want to open and use that existing database-->so I check to see if one already exists using Dexie.exists(). Borrowing the 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");
});

但是,这段代码——直接取自样本——对我不起作用。如果数据库不存在,代码会正确 return 发出警报 "Database doesn't exist"。但是,在测试时,我之前创建了一个数据库,然后使用 db.delete() 将其删除。现在,当我测试我删除的数据库是否存在时,return 什么也没有。它应该 return "Database doesn't exist",或者至少是一个错误,但事实并非如此。我发现如果我将代码更新为以下内容:

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, an error occurred when trying to check database existence" 确实弹出。不幸的是,我不知道错误是什么,也不知道为什么 catch() 语句只在我删除匿名函数时才起作用。

查看 Dexie.exists() 的代码,它测试是否可以 open() 有问题的数据库。据我所知,尝试打开我删除的那个数据库似乎以与 Dexie.exists() 对我失败的方式类似的方式失败。似乎我之前尝试删除数据库时搞砸了一些东西,现在 Dexie 不工作了。由于 Dexie 很好地结合了 promises,我看不到任何我假设正在生成的错误。

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

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

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