首页 > 代码库 > HTML5 indexedDB数据库的入门学习(二)
HTML5 indexedDB数据库的入门学习(二)
上一篇关于indexedDB的学习笔记主要写了indexedDB数据库的基本操作—增删改查;但是为什么我们要用indexedDB呢?为什么indexedDB受到了开发者们的青睐呢?最主要的就是indexedDB的几个核心功能:有了游标和索引和范围才能真正发挥indexedDB威力
1、索引:为什么它叫indexedDB?因为它提供给了我们通过索引(index)去查询我们需要的值;
2、游标:游标提供给我们循环查询到的数据,
3、范围:和游标一起结合指定我们需要循环的范围,
4、索引、游标、范围的综合应用可以给我们带来很好的数据交互体验
创建索引:
1 request.onupgradeneeded = function(event) {2 db = event.target.result;3 if(!db.objectStoreNames.contains("table")) {4 var store = db.createObjectStore("table",{keyPath: "ssn"});5 }6 var index = store.createIndex("nameIndex","name",{unique:true});//创建name索引,后续我们可以通过name查找7 console.log("createObjectStore success!");8 };
通过游标读取数据:
1 db.transaction("table").objectStore("table").openCursor().onsuccess = function(event) {//openCursor方法 2 var getString = ""; 3 var cursor = event.target.result; 4 if (cursor) { 5 getString += "Name for SSN " + cursor.key + " is " + cursor.value.name; 6 console.log("Name for SSN " + cursor.key + " is " + cursor.value.name); 7 cursor.continue(); 8 //alert(getString); 9 }10 document.getElementById("get_ssn").innerHTML += getString+"<br/>";11 }
通过索引查找/读取数据://前提是在创建数据表的时候创建了索引index否则不能通过索引去访问
1 db.transaction("table")2 .objectStore("table")3 .index("nameIndex")4 .get("chenjian")5 .onsuccess = function() {6 console.log(this.result.email);7 };
索引index和游标cursor的混合应用:
1 db.transaction("table") 2 .objectStore("table") 3 .index("nameIndex") 4 .openCursor(IDBKeyRange.only(”chenjian“)) 5 .onsuccess = function() { 6 var cursor = event.target.result; 7 if (cursor) { 8 console.log(cursor.key + cursor.value.name); 9 cursor.continue();10 }11 };
openCursor()方法可以传入指定范围的参数:如下
指定范围:
1 index.openCursor()/index.openKeyCursor()方法在不传递参数的时候会获取object store所有记录,像上面例子一样我们可以对搜索进行筛选2 可以使用key range 限制游标中值的范围,把它作为第一个参数传给 openCursor() 或是 openKeyCursor()3 IDBKeyRange.only(value):只获取指定数据4 IDBKeyRange.lowerBound(value,isOpen):获取最小是value的数据,第二个参数用来指示是否排除value值本身,也就是数学中的是否是开区间5 IDBKeyRange.upperBound(value,isOpen):和上面类似,用于获取最大值是value的数据6 IDBKeyRange.bound(value1,value2,isOpen1,isOpen2):不用解释了吧
当传入了指定的范围,游标便只在范围中循环输出
HTML5 indexedDB数据库的入门学习(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。