IndexedDB.open()打开与新建数据库

2019-6-10 09:07| 作者: admin| 查看: 645| 评论: 0|来自: 蚂蚁部落

关于IndexedDB数据库基本操作可以参阅IndexedDB 数据库用法一章节。

本文将结合代码示例与图示详细介绍一下IndexedDB.open方法的应用。

语法结构:

[JavaScript] 纯文本查看 复制代码
let IDBOpenDBRequest = indexedDB.open(name, version);

参数解析:

(1).name:必需,要打开或者创建的数据库名称,一个字符串。

(2).version:可选,数据库的版本,一个整数。

虽然方法的使用方式比较简单,但是涉及的知识点很多,下面将分步详细介绍。

一.indexedDB属于window对象:

indexedDB属于window对象,所以可以将window对象省略。

简单代码片段如下:

[JavaScript] 纯文本查看 复制代码
window.indexedDB.open("antzone", 1);
indexedDB.open("antzone", 1);

上述两段代码的功能是相同的,都可以打开或者创建名称为"antzone"的数据库。

二.打开数据库还是创建数据库:

创建与打开数据库都是通过IndexedDB.open()方法实现。

(1).如果对应名称的数据库不存在,那么将会创建并打开数据库。

(2).如果对应名称的数据已经存在,那么将打开对应的数据库。

代码实例如下:

indexedDB.open是一个类似于AJAX的异步操作,返回一个IDBOpenDBRequest对象,并不是期望的数据库。

然后再通过IDBOpenDBRequest对象的事件来监听相关状态:

(1).success:数据库打开成功。

(2).error:数据库打开失败。

(3).upgradeneeded:第一次打开或者创建数据库,或者数据库版本发生变化。

(4)blocked:上一次的数据库连接还未关闭。

假设在此之前并不存在一个名为"antzone"的数据库,那么上述代码会创建并打开对应数据库。

代码分析如下:

(1).当前并无任何数据库,运行上述代码之后可以创建名称为"antzone"的数据库:

a:3:{s:3:\"pic\";s:43:\"portal/201906/10/090919k7jelesxx21ce2x1.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到创建名为"antzone"的数据库,版本为1。

如果看不到新建的数据库,可以右键点击indexedDB,然后选择刷新菜单即可出现。

首先会触发upgradeneeded事件,新建数据库可以认为版本是从无到有,然后再触发success事件。

然后再看IndexedDB.open()方法返回值,控制台截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201906/10/090937abizn0f2zsariia7.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

简单分析如下:

(1).返回值是一个IDBOpenDBRequest对象。

(2).真正的数据库对象是通过IDBOpenDBRequest对象的result属性获取。

三.关于数据库版本问题:

通过方法的第二个参数规定新建或者打开数据库的版本。

第二个参数可以省略,规则如下:

(1).参数是整数,规定小数可能会出现一些问题,且会自动转换为最接近的整数。

(2).如果新建数据库,且省略此参数,那么默认值为1,否则版本为规定值。

(3).如果打开数据库,切省略此参数,那么值为当前版本,如果规定,则值必须大于等于当前版本。

(4).大于当前版本,则会触发upgradeneeded事件。

(5).在同一时刻只会存在一个版本数据库,且数据库版本变动只能增加不能减少。

创建数据库后,那么首先任务就是创建对象仓库,具体参阅IndexedDB 数据库创建对象仓库一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部