IndexedDB 是什么( 二 )

  1. 基本思路是创建一个事务,先找到想要修改的数据主体,然后在更新该数据主体内容 。事务创建逻辑相同,并在创建之后调用事务的 get 和 put 操作 。
  2. 删除数据库中的数据
// 这里的 db 就是第二步中的 db 对象,// 新建事务let transaction = db.transaction('dataBaseName', "readwrite");// 打开已经存储的数据对象let objectStore = transaction.objectStore('person');// 获取存储的对应键的存储对象, 传入主键 id,值为 1 let objectStoreRequest = objectStore.delete(1);
  1. 调用 delete 接口,传入指定的 id 即可 。
可以提效的类库
? 从上面的例子中可以看出,每一次操作需要至少三行代码才能完成,而且需要一直维护 DB 的对象引用,避免它被回收,这样子开发代码膨胀得太厉害,所以我们在业务中引入其他类库来减少代码量
  • LocalForage
  • 可以指定数据存储方案,默认依次为 IndexedDB、WebSQL、LocalStorage,意味着当前 IndexedDB 失效可以有兜底措施 。
  • API 简化为 CRUD ( getItem、removeItem、setItem、clear )
  • 库大小为 475b
  • Pouchdb
  • API 简化为 put、get、remove,基于 promise 来检查回收错误
  • 有较好的错误日志机制,如失败,冲突等等,方便调试
  • 库大小为 255b
这两个类库比较符合我们的开发要求,我们当前使用的是 LocalForage 。
结束语
在业务开发中,我们都会碰到或多或少的本地存储需求,本文介绍了其中一种存储方案 IndexedDB 的简单实践 。就我们的应用场景来看,IndexedDB 的适用面还是很广的 。考虑到 IE10 也可以支持,把它实践在实际项目中应该是没有问题的 。
文章首发于:https://www.zoo.team/article/indexeddb

【IndexedDB 是什么】


推荐阅读