HTML5 indexedDB数据库二之索引查询和游标

接上一章:

//创建查询函数
function getDataByIndex(db, storeName) {
    var tx = db.transaction(storeName);//获取查询事务
    var store = tx.objectStore(storeName);//查询并获得表
    var index = store.index("name_index");//获得索引
    index.get("小B").onsuccess = function(e){//通过索引回调获得“小B”的信息对象
        var stu = e.target.result;
        console.info(stu.name + " " + stu.age + " " + stu.id);
    };
    var index_age = store.index("index_age");
    index_age.get(18).onsuccess = function(e) {
    //这里只能获取到第一个age为18的stu,虽然age索引不是唯一的,获得多个需要使用游标
        var sudent = e.target.result;
    };
}

 

//通过游标获取全部数据
function getAllData(db, storeName) {
    var tx = db.transaction(storeName);
    var store = tx.objectStore(storeName);
    var c =store.openCursor();//打开游标
    c.onsuccess = function(e) {//成功执行回调
        var cursor = e.target.result;
        if (cursor){//如果存在
            console.log(cursor.key);//key是表的主键
            var stu = cursor.value;
            console.log(stu.name);
            cursor.continue();//继续下一个
        }
    }
}
//index and cursor 索引和游标同时使用
function getData(db, storeName) {
    var tx = db.transaction(storeName);
    var store = tx.objectStore(storeName);
    var index = store.index("index_age");
    //打开游标,通过IDBKeyRange设置游标范围,这里设置为只获取age等于18的数据
    var c = index.openCursor(IDBKeyRange.only(18));
    c.onsuccess = function(e) {//成功执行回调
        var cursor = e.target.result;
        if (cursor){//如果存在
            console.log(cursor.key);//key是表的主键
            var stu = cursor.value;
            console.log(stu.name);
            cursor.continue();//继续下一个
        }
    }
}

 

//IDBKeyRange.only(val);只获取指定数据
//IDBKeyRange.lowerBuund(val, isOpened);获取在val以前或者小的数据,isOpened是开闭区间,false是包含val(闭区间),true是不包含val(开区间)
//IDBKeyRange.upperBuund(val, isOpened);获取在val以后或者大的数据,isOpened是值开闭区间,false是包含val(闭区间),true是不包含val(开区间)
//IDBKeyRange.buund(val1, val2, isOpened1, isOpened2);获取在value1与value2之间的数据,isOpened1和isOpened2分别是左右开闭区间

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值