Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

indexedDB(陆) 配置索引

  在indexedDB中,索引的概念也类似于普通的关系数据库,但也不完全是一回事。区别在于普通的关系数据库中即使没有索引也可以对字段做筛选和排序的操作,但indexedDB中想要完成这些操作索引就是必须的。因此我们要根据查询的需求来配置存储对象的索引。
  这个实例需要用到本地储存我就不做在线运行了 <script>
var db,cn=indexedDB.open("MyDB");
cn.onupgradeneeded=function(e){
  db=e.target.result;
  //创建对象存储
  var obj=db.createObjectStore("MyOBJ",{keyPath:"id"});
  //a字段索引
  obj.createIndex("a","a");
  //多字段索引(注意顺序)
  obj.createIndex("ab",["a","b"]);
  obj.createIndex("ba",["b","a"]);
};
cn.onsuccess=function(e){
  var i,transaction,obj;
  db=e.target.result;
  transaction=db.transaction("MyOBJ","readwrite");
  obj=transaction.objectStore("MyOBJ");
  //添加测试数据
  for(i=0;i<12;i++)obj.add({id:i,a:i%4,b:Math.random()});
};
</script>
  createIndex方法的第一个参数是索引的名称;第二个参数是需要索引的字段,可以是单个,也可以是数组。要注意的是多个字段同时索引时顺序很关键。当然createIndex还有第三个参数,可以对索引添加一些约束,这篇暂时不详细介绍它。
  在Chrome调试工具的资源面板中可以看到这些索引对应的数据



  数据会根据设置的索引排序,如果设置上多个字段就多个从左到右依次排序。比如上面这个ab所以,先根据a排序,a相同时再根据b排序。由于还没介绍过游标的使用,这里就不纠结筛选了。总之,索引最主要的用途就是排序和筛选,也就是关系数据库的where和order。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^