IDB等值搜索详细讲解及案例分享
等值搜索
主键查询:搜索主键 = '主键字段值' 的记录
var tb = transaction.objectStore( '数据表名' );
tb.get( '主键字段值' ).onsuccess = function( event ) {
var record = event.target.result; // 搜索到的记录
};
等价于:
var records = [];
var range = window.IDBKeyRange.only( '主键字段值' );
var tb = db.transaction( '数据表名' ).objectStore( '数据表名' );
tb.openCursor( range ).onsuccess = function( event ) {
var cursor = event.target.result;
if ( cursor ) {
var record = cursor.value;
records.push( record );
cursor.continue();
}
};
索引查询:搜索索引 = '索引字段值' 的记录
var records = [];
var range = window.IDBKeyRange.only( '索引字段值' );
var tb = db.transaction( '数据表名' ).objectStore( '数据表名' );
var index = tb.index( '索引名' );
index.openCursor( range ).onsuccess = function( event ) {
var cursor = event.target.result;
if ( cursor ) {
var record = cursor.value;
records.push( record );
cursor.continue();
}
};
总结一下:
1.主键等值搜索,由于主键具有唯一性,所以最多只能搜出一条记录,我们就直接用tb.get()方法搜索即可。tb.get()方法只能返回最多一条记录。当然你也可以使用游标结合window.IDBKeyRange.only来实现,但是游标不是省油的灯,耗性能,建议使用tb.get()。
2.索引等值搜索,由于索引不一定具有唯一性,所以有可能搜出多条记录,如果出现多条符合条件的记录,用tb.get()只能返回第一条符合条件的记录,因此此时稳妥的方法,就是利用游标遍历数据表中的记录,具体操作:先获取index索引对象,再通过其调用openCursor方法打开游标,并传入搜索条件range参数,最终筛选出符合条件的记录。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5079.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
