如何在索引数据库中按属性查询对象
How to query objects by attribute in IndexedDB?
我有一个IndexedDB对象存储,它存储以下结构的用户对象:
{ id: 1, name: "Peter", role: "admin", password: "someHash"}
对象存储的创建方式如下:
request.onupgradeneeded = function(event){
var db = request.result;
var objectStore = db.createObjectStore("users", { keyPath: "id", autoIncrement: true });
objectStore.createIndex("uniqueNameIndex", "name", { unique: true });
objectStore.createIndex("roleIndex", "role", { unique: false });
};
我知道如何通过对象的键(id)检索对象,并且我还能够使用光标遍历所有对象。这是一个工作演示。
我现在要做的是获取具有特定角色的所有用户 - 例如,检索所有管理员,而无需迭代整个对象存储。
我该怎么做?
function forEachAdmin(db, callback) {
var ROLE_ADMIN = 'admin';
var tx = db.transaction('users');
var store = tx.objectStore('users');
var index = store.index('roleIndex');
var range = IDBKeyRange.only(ROLE_ADMIN);
var request = index.openCursor(range);
request.onsuccess = function() {
var cursor = this.result;
if(cursor) {
var adminUser = cursor.value;
callback(adminUser);
cursor.continue();
} else {
// No admins found or all admins iterated
}
};
}
function handleAdmin(user) {
console.log('Doing something with admin user %o', user);
}
var request = indexedDB.open('dbname');
request.onsuccess = function() {
var db = this.result;
forEachAdmin(db, handleAdmin);
};
相关文章:
- 新手查询动态添加属性
- 根据jquery数据属性值进行查询
- select2:无法读取null的属性查询
- 基于其他属性查询多维数组属性
- j查询在设置属性后在后续单击时不读取数据属性
- 使用 SharePoint 查询字符串值作为应用程序部件属性
- MEAN.js MongoDB查询中用户特定计算的属性
- 动态添加数据时按数据属性查询JQuery选择器
- 查询css类的属性值,即使不在使用中
- 追加并替换data-*属性URL的查询字符串值
- 类型错误:无法读取未定义的 mysql 查询的属性“名称”
- 无法向 Mongoose 查询返回的对象添加新属性
- j查询不显眼的验证属性参考
- j查询使用 [] 选择名称属性
- 通过 Javascript 从 href 属性获取查询字符串
- j查询验证引擎属性不起作用
- 如何在索引数据库中按属性查询对象
- j根据特定对象属性查询唯一对象
- 类型错误:试图将未定义的属性查询包装为函数
- Extjs5:如何通过各种属性查询组件