HTML5 indexedDB数据库的入门学习(二)

时间:2022-01-07 08:14:53

上一篇关于indexedDB的学习笔记主要写了indexedDB数据库的基本操作—增删改查;但是为什么我们要用indexedDB呢?为什么indexedDB受到了开发者们的青睐呢?最主要的就是indexedDB的几个核心功能:有了游标和索引和范围才能真正发挥indexedDB威力

1、索引:为什么它叫indexedDB?因为它提供给了我们通过索引(index)去查询我们需要的值;

2、游标:游标提供给我们循环查询到的数据,

3、范围:和游标一起结合指定我们需要循环的范围,

4、索引、游标、范围的综合应用可以给我们带来很好的数据交互体验

创建索引:

 request.onupgradeneeded = function(event) {
db = event.target.result;
if(!db.objectStoreNames.contains("table")) {
var store = db.createObjectStore("table",{keyPath: "ssn"});
}
var index = store.createIndex("nameIndex","name",{unique:true});//创建name索引,后续我们可以通过name查找
console.log("createObjectStore success!");
};

通过游标读取数据:

 db.transaction("table").objectStore("table").openCursor().onsuccess = function(event) {//openCursor方法
var getString = "";
var cursor = event.target.result;
if (cursor) {
getString += "Name for SSN " + cursor.key + " is " + cursor.value.name;
console.log("Name for SSN " + cursor.key + " is " + cursor.value.name);
cursor.continue();
//alert(getString);
}
document.getElementById("get_ssn").innerHTML += getString+"<br/>";
}

通过索引查找/读取数据://前提是在创建数据表的时候创建了索引index否则不能通过索引去访问

 db.transaction("table")
.objectStore("table")
.index("nameIndex")
.get("chenjian")
.onsuccess = function() {
console.log(this.result.email);
};

索引index和游标cursor的混合应用:

 db.transaction("table")
.objectStore("table")
.index("nameIndex")
.openCursor(IDBKeyRange.only(”chenjian“))
.onsuccess = function() {
var cursor = event.target.result;
if (cursor) {
console.log(cursor.key + cursor.value.name);
cursor.continue();
}
};

openCursor()方法可以传入指定范围的参数:如下

指定范围:

 index.openCursor()/index.openKeyCursor()方法在不传递参数的时候会获取object store所有记录,像上面例子一样我们可以对搜索进行筛选
可以使用key range 限制游标中值的范围,把它作为第一个参数传给 openCursor() 或是 openKeyCursor()
IDBKeyRange.only(value):只获取指定数据
IDBKeyRange.lowerBound(value,isOpen):获取最小是value的数据,第二个参数用来指示是否排除value值本身,也就是数学中的是否是开区间
IDBKeyRange.upperBound(value,isOpen):和上面类似,用于获取最大值是value的数据
IDBKeyRange.bound(value1,value2,isOpen1,isOpen2):不用解释了吧

当传入了指定的范围,游标便只在范围中循环输出

HTML5 indexedDB数据库的入门学习(二)的更多相关文章

  1. HTML5 indexedDB数据库的入门学习(一)

    笔者早些时间看过web sql database,但是不再维护和支持,所以最近初步学习了一下indexedDB数据库,首先indexedDB(简称IDB)和web sql database有很大的差别 ...

  2. SpringMVC入门学习&lpar;二&rpar;

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  3. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  4. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  5. git入门学习&lpar;二&rpar;:新建分支&sol;上传代码&sol;删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  6. Egg入门学习&lpar;二&rpar;---理解service作用

    在上一篇文章 Egg入门学习一 中,我们简单的了解了Egg是什么东西,且能做什么,这篇文章我们首先来看看官网对Egg的整个框架的约定如下,及约定对应的目录是做什么的,来有个简单的理解,注意:我也是按照 ...

  7. HTML5 indexedDb 数据库

    indexedDb 数据库   上一节中,我们知道了,HMTL5中内置了两种本地数据库,一种是通过SQL语言来访问的文件型SQL数据库被称为“SQLLite,另一种是是被称为indexedDB 的数据 ...

  8. 数据库中间件DBLE学习&lpar;二&rpar; 学习配置schema&period;xml

    前言 一边有一个经常引诱我让我"娱乐至死"的视频,还有一个不停"鞭策"我让我快点学习的大BOSS.正是有这两种极端的爱才让我常常在自信中明白自己努力的方向.嗯, ...

  9. node入门学习&lpar;二&rpar;

    一.模块系统 1.创建模块和引用模块 //如何创建一个模块 exports.hello = function(){ console.log('hello worl'); }; //这创建了一个模块 / ...

随机推荐

  1. &lbrack;Asp&period;net MVC&rsqb;Asp&period;net MVC5系列——添加数据

    目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...

  2. 安装Windows8&period;1操作系统 - 初学者系列 - 学习者系列文章

    Windows 8这款操作系统是微软最新的操作系统.虽然微软做了推广,但是据消息称市场份额暂时没那么高.下面就对该操作系统的安装进行简要介绍. 1.  将光盘装入光驱,设置BIOS中光驱启动,启动计算 ...

  3. JavaScript装饰者模式

    这里我们通过需求逐渐引出装饰者模式. 下面是一个关于几代汽车的不同逐渐体现装饰者模式的. 首先,我们先引入一个接口文件----目的为检验实现类是否完全实现接口中的方法,代码如下, //定义一个静态方法 ...

  4. 用TreeSet生成不重复自动排序随机数组

    随机数组就是在指定长度的数组中用随机数字为每个元素赋值,常用于不确定数值的环境,如拼图游戏需要随机数组来打乱图片顺序.可是同时也存在问题,就是随机数的重复问题,这个问题常常被忽略. TreeSet类的 ...

  5. 树和二叉树-&gt&semi;遍历

    文字描述 二叉树的先根遍历 若二叉树为空,则空操纵,否则 (1) 访问根结点 (2) 先根遍历左子树 (3) 先根遍历右子树 二叉树的中根遍历 若二叉树为空,则空操纵,否则 (1) 中根遍历左子树 ( ...

  6. rsync 实现文件同步 &lpar;重要数据通过rsyncr把数据同步到不同的两台服务器上&comma;这样可以防止服务器的硬盘故障导致数据丢失&rpar; 客户端同步时如果要排某个目录

    rsync是unix系统下的数据镜像 备份工具,一般linux系统都 自带: # rpm -qa|grep rsync rsync-3.0.9-17.el7.x86_64 服务器端:10.100.0. ...

  7. centos7&period;3安装zip&comma;unzip

    安装命令: yum install -y unzip zip

  8. HTTP传输数据压缩

    一.基础 1.HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法. HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件. 能大大减少网络传 ...

  9. 查询MySQL数据表的字段名和表结构

    查询表的字段: -- 查询表的字段名 SELECT COLUMN_NAME -- GROUP_CONCAT('a.', COLUMN_NAME SEPARATOR ',') AS COLUMN_NAM ...

  10. 文本处理三剑客之 Sed &mdash&semi;&mdash&semi;高级编辑命令

    本篇介绍sed的高级编辑命令 高级编辑命令 P:打印模式空间开端至\n内容,并追加到默认输出之前 n: 读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 h: 把模式空间 ...