2013-04-14 5 views
4

Я пытаюсь создать функцию поиска на моем сайте, я пытаюсь найти IndexedDB кодКак искать IndexedDB для строки

SELECT "column" FROM "table" WHERE "column" LIKE "%keyword%"

я нашел решение в IndexedDB Fuzzy Search

db.transaction(['table'], 'readonly') 
    .objectStore('table') 
    .openCursor(IDBKeyRange.bound(keyword, keyword + '\uffff'), 'prev') 
    .onsuccess = function (e) { 
     e || (e = event); 
     var cursor = e.target.result; 
     if (cursor) { 
      console.log(cursor.value.column); 
      cursor.continue(); 
     } 
    }; 

но как я могу найти «% keyword%» вместо «% keyword»?

+1

Я точно не знаю, как это все работает, так что я просто угадать, но что о 'IDBKeyRange.bound ('\ uffff' + ключевое слово, ключевое слово + '\ uffff')'? – Ian

+0

он не работает, возвращает ошибку 'DataError: DOM IDBDatabase Exception 0' – qwe123wsx

+0

возможный дубликат [IndexedDB Fuzzy Search] (http://stackoverflow.com/questions/7086180/indexeddb-fuzzy-search) – Josh

ответ

2

Нет ничего похожего на SQL WHERE в IndexedDB.

Я бы перебрать таблицы значений/объектов хранения и увидеть, если текущий столбец курсора содержит ключевое слово:

var keyword = "foo"; 
var transaction = db.transaction("table", "readwrite"); 
var objectStore = transaction.objectStore("table"); 
var request = objectStore.openCursor(); 
request.onsuccess = function(event) { 
    var cursor = event.target.result; 
    if (cursor) { 
     if (cursor.value.column.indexOf(keyword) !== -1) {     
      console.log("We found a row with value: " + JSON.stringify(cursor.value)); 
     } 

     cursor.continue();   
    } 
}; 
Смежные вопросы