Как запрашивать объекты по атрибуту в 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 });
};

Я знаю, как получить объект по его ключу (идентификатору), и я также могу перебирать все объекты с помощью курсора. Вот рабочая демонстрация.

Что я хочу сделать сейчас, так это получить всех пользователей, у которых есть определенная роль, например. получить всех администраторов, не перебирая все хранилище объектов.

Как я могу это сделать?


person maja    schedule 17.12.2014    source источник