首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dexie.exists()方法不返回任何内容(Dexie.js & IndexedDB)

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

Stack Overflow用户
提问于 2016-04-10 00:45:24
回答 1查看 1.2K关注 0票数 1

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

代码语言:javascript
复制
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");
});

然而,这个代码--直接从样本中提取--对我不起作用。如果数据库不存在,代码将正确返回警报"Database不存在“。但是,在进行测试时,我以前创建了一个数据库,然后使用db.delete()删除了它。现在,当我测试我删除的数据库是否存在时,不会返回任何内容。它应该返回“数据库不存在”,或者至少返回一个错误,但它不存在。我发现如果我将代码更新到以下内容:

代码语言:javascript
复制
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是痛苦的)。

非常感谢您对此的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-10 11:53:00

所以你的.catch(alert())正在返回一个假阴性..。即使承诺兑现了也会显示出警报..。从你所说的看来,这个承诺是没有解决的,因此仍然处于一个悬而未决的状态。清除浏览器的缓存将有帮助。像这样

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36524460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档