索引数据库 - 检查表存在并包含数据



当我的应用程序首次运行时使用IndexedDB,我用一些数据填充它,我想确保在创建数据库和表时它们不存在。

我可以查询表的长度以查看它是否包含 JavaScript 中的数据吗?

我们可以使用 IndexDB 的 objectStoreNames 属性来检查是否存在 ObjectStore。

var db_object, object_store;
if( !db.objectStoreNames.contains(currentobjectstore) )
{
  db_object =  i_db.createObjectStore(currentobjectstore, {autoIncrement:true} );
 object_store = db.transaction(currentobjectstore, 'readwrite').objectStore(currentobjectstore);
} else {
 object_store = db.transaction(currentobjectstore, 'readwrite').objectStore(currentobjectstore);
}

最好的方法是尝试在 try catch 块中打开对象存储。它也是同步的。如果出现错误,您可以创建商店,例如:

var store;
  try {
    store = request.transaction.objectStore('yourStore');
  }
  catch(e) {
    store = db.createObjectStore('yourStore');
}

您可以使用 objectStore.count(( 函数,但我建议存储某种元数据,这些数据会说您的本地数据库已初始化。否则,您可以在数据创建过程中重新加载页面,并且永远不会将数据与远程数据完全同步。

如果具有指定名称的数据库不存在,则创建数据库,否则将打开该数据库

例如。var request = indexedDB.open("DataTbl");

因此,如果您的数据库已经存在,

它将打开它并检查表中的内容是否已经存在,然后您可以创建一个 xyz 对象存储并在其中存储一些键/值标志对,表示插入成功,并在每次重新加载页面时检查它。

您也可以在尝试计数时给出由@toske指定的计数功能

裁判:

  • http://www.ibm.com/developerworks/library/wa-indexeddb/

  • http://www.w3.org/TR/IndexedDB/

相关内容

  • 没有找到相关文章

最新更新