使用 YDN-DB 的 IndexedDB:如何确定对象存储是不是存在
Posted
技术标签:
【中文标题】使用 YDN-DB 的 IndexedDB:如何确定对象存储是不是存在【英文标题】:IndexedDB using YDN-DB: How to determine if an object store exists使用 YDN-DB 的 IndexedDB:如何确定对象存储是否存在 【发布时间】:2014-08-15 20:45:13 【问题描述】:将 IndexedDB 用于本地 html5 应用程序,特别是 YDN-DB 包装器,我经常需要使用动态获取的商店名称来查询商店。 当商店不存在时,我会出现错误,并且 javascript 执行中止。错误看起来像这样:
Uncaught ydn.error.ArgumentException: Store "client_store" not found.
当然,我知道商店不存在,但我怎样才能最好地编写代码来更优雅地“捕捉”这个错误? 谢谢。
【问题讨论】:
【参考方案1】:你可以使用这个小实用功能:
function storeExists(name)
var exists = false;
db.getSchema().stores.forEach(function (store)
if (store.name === name)
return exists = true;
);
return exists;
执行
storeExists('client_store');
【讨论】:
【参考方案2】:最好的办法是避免动态更改数据库架构。
您还可以通过签入架构db.getSchema().stores.contains('new store')
来检查商店名称是否存在。
【讨论】:
谢谢@Kyaw 的回答。但是,这并没有太大帮助(还没有!)。db.getSchema().stores
返回一个包含所有商店的数组,但每个商店都是一个对象,您必须查询 name
属性。遍历它们以获取if(store_exists)
似乎并不简单。所以现在,我选择的路径是:确保每个可能的存储都已经存在于模式中(如果脚本要请求它),即使它还不需要存储。尽管如此,我非常感谢您一贯的支持。以上是关于使用 YDN-DB 的 IndexedDB:如何确定对象存储是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
YDN-DB 仅从我的 IndexedDb 存储中获取前 100 行
在 Firefox Jetpack 插件中使用 ydn-db