1
function fetchEmployeeByEmail() {
  try {
    var result = document.getElementById("result");
    result.innerHTML = "";

    if (localDatabase != null && localDatabase.db != null) {
        var range = IDBKeyRange.lowerBound("john");

        var store = localDatabase.db.transaction("employees").objectStore("employees");
        var index = store.index("emailIndex");

        index.get(range).onsuccess = function(evt) {
            var employee = evt.target.result; 
            var jsonStr = JSON.stringify(employee);
            result.innerHTML = jsonStr;   
        };
    }
  }
  catch(e){
    console.log(e);
  }
}

上記の例では、すべてのメールの名前が「john」であることを取得する方法????

4

3 に答える 3

1

キーワードからキーワードへのインデックスを開き、最後の文字を右枠で変更します。

IDBKeyRange.bound(value, increaseLastCharCode(value), false, true);

そして、最後の文字を変更する関数:

function increaseLastCharCode(str){
        return str.substring(0, str.length-1) + String.fromCharCode(str.charCodeAt(str.length-1)+1);
}

これにより、"John" から "Joho" までのインデックスが開かれ、"Joho" で始まる結果は返されません。

于 2013-06-05T15:45:37.727 に答える
1

次のようにフィルターを変更します。

if (localDatabase != null && localDatabase.db != null) { 
    var range = IDBKeyRange.bound("john", "john" + '|', true, true);
codes...
于 2013-05-14T15:57:52.340 に答える