当前位置: 首页 > 工具软件 > IndexedDB > 使用案例 >

indexedDB整理

缑嘉玉
2023-12-01

indexedDB

突然想看看这个怎么用所以来学习下(没写完随后在更新)

特点:
MDN解释:一种底层API,用于在客户端存储大量的结构化数据,而且支持索引查询实现高性能搜索,跟storage相比这个存储更多,相对较少的情况没必要用storage就好(个人理解)

这个东西只需要指定数据库模式,打开与数据库的连接,然后检索和更新一系列事务。API都是异步的,有需要可以引入同步的。

  1. 键值对存储
  2. 异步
  3. 支持事务
  4. 支持索引
  5. 同源限制
  6. 储存空间大
  7. 支持二进制存储 Buffer Blob

主要对象
每个域名(严格的说,是协议 + 域名 + 端口)都可以新建任意多个数据库。

  1. 数据库:IDBDatabase
    每个数据库包含若干个对象仓库(object store)。它类似于关系型数据库的表格。
  2. 对象仓库:IDBObjectStore
  3. 索引:IDBIndex
    数据记录的读写和删改,都要通过事务完成 , 事务对象提供error、abort和complete三个事件,用来监听操作结果。
  4. 事务:IDBTransaction
  5. 操作请求:IDBRequest
  6. 指针:IDBCursor
  7. 主键集合:IDBKeyRange

操作
新建数据库

	var indexedDBStore = window.indexedDB.open(databaseName, version);
	// databaseName 没有则创建 有则打开,版本号为整数

事件回调

	// 错误
	indexedDBStore.onerror = function (e){
		// something code...
	}
	// 成功
	var db
	indexedDBStore.onsuccess = function (e){
		db = indexedDBStore.result // 版本存在的情况
		// something code...
		
	}
	// 版本升级
	// 传递的版本参数大于目前浏览器里该名字的数据库的版本参数
	// 版本升级后 代码需要在这里面完成 因为触发了这个监听函数
	indexedDBStore.onupgradeneeded = function (e) {
    db = e.target.result;
  }
	// 新建表
	var objectStore = db.createObjectStore('person',{keyPath: 'id'})
	// 这样会新建一个person的表格 主键是id
	// 严谨些的话是应该先判断 再新建
	!db.objectStoreNames.contains('person')
	// 每次添加删除修改表、数据库的时候(表内键值对除外)需要把对应版本号+1(比现在版本号大就行)
 类似资料: