indexDB

6 篇文章 0 订阅
1 篇文章 0 订阅

现有的浏览器存贮方案:

1.cookie:大小不超过4kb,每次请求发回服务器

2.localStorage:大小2.5MB到10MB之间,不提供搜索功能,不能建立自定义索引

indexDB是浏览器提供的本地数据库,可以被网页脚本创建和操作,允许存贮大量数据,提供查找接口,能建立索引。

数据库类型而言,indexDB更接近NoSQL数据库。


indexDB的特点:

1.键值对储存:indexDB采用对象仓库存放数据,所有类型的数据都可以存入。

2.异步:indexDB操作不会锁死浏览器

3.支持事务:操作步骤中一步失败,整个事务取消,不存在只改写一部分数据的情况

4.同源限制:不能访问跨域数据库,只能访问自身域名下的数据库。

5.储存空间大:一般来说不少于250MB,没上限

6.支持二进制储存:可以存储字符串,而且可以存储二进制数据。


indexDB是一个API,把不同的实体抽象成一个个对象接口。

  • 数据库:IDBDatabase对象
  • 对象仓库:IDBObjectStore对象
  • 索引:IDBIndex
  • 事务:IDBTransaction对象
  • 操作请求:IDBRequest对象
  • 指针:IDBCursor对象
  • 主键集合:IDBKeyRange对象

 

  • 1.数据库

数据库是一系列相关数据的容器,每个协议+域名+端口都可以新建任意个数据库

indexDB数据库有版本的概念,同一个时刻只能有一个版本的数据库存在,如果要修改数据库结构,只能通过升级数据库版本

  • 2.对象仓库

每个数据库包含若干个对象仓库,类似数据库的表格。

  • 3.数据记录

对象仓库保存的是数据记录。每条数据记录和关系型数据库中的行类似,只有主键和数据体两部分。主键来建立索引,必须要不同。主键可以是数据记录里面的一个属性或者编号。

  • 4.索引

在对象仓库里面为不同的属性建立索引可以加速数据的检索。

  • 5.事务

数据记录的读写和删改,都要通过事务完成。事务对象提供error,abort,complete三个事件,用来监听操作结果


操作流程:

  • 1.打开数据库 indexDB.open()
var request = window.indexDB.open(databaseName,version)

第一个参数是数据库名字,数据库不存在就新建数据库,新建数据库默认版本为1;第二个参数是整数,表示数据库的版本,如果省略,默认为当前版本。

indexDB.open()方法返回一个IDBRequest对象。这个对象通过error,success,upgradeneeded处理打开数据库的操作结果。

  1. .1 error事件,request.onerror

表示打开数据库失败

  1. .2 success事件,request.onsuccess

表示打开数据库成功

  1. .3 upgradeneedend数据库升级

如果指定的版本号大于数据库实际版本号,就会发生数据库升级事件

var db ;
request.onupgradeneeded = function(event){
    db = event.target.result;//数据库实例
}
  • 2.新建数据库

新建数据库和打开数据库是同一个操作,指定的数据库不存在就会新建。不同的是后续操作主要在upgradeneeded事件的监听函数里面完成。新建数据库后,需要新建对象仓库,即新建表

request.onupgradeneeded = function(event){
    db = event.target.result;
    var objectStore = db.createdObjectStore('firstTable',{ keyPath: 'id'})
}

 

 

 

 

 

 

 

 

 

 

 

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值