このトピックでは、IndexedDB を使用して検索語の末尾にワイルドカードを使用する方法について説明します。
検索用語の最後と最初にワイルドカードを追加する方法を探しています。SQL では、次のようになりますLIKE '%SearchTerm%'
。
IndexedDB でこれを達成するにはどうすればよいですか? これが私のコードです:
function getMaterials() {
var materialNumber = $("#input").val();
var transaction = db.transaction(["materials"]);
var objectStore = transaction.objectStore("materials");
var request = objectStore.openCursor(IDBKeyRange.bound(materialNumber, materialNumber + '\uffff'), 'prev');
$("#output").find("tr:gt(0)").remove();
request.onsuccess = function (event) {
var cursor = event.target.result;
if (cursor) {
var newRow = '<tr><td>'+ cursor.value.materialNumber +'</td>'+
'<td>'+ cursor.value.description +'</td>'+
'<td>'+ cursor.value.pieces +'</td>'+
'<td>'+ cursor.value.price +'</td></tr>';
$('#output').append(newRow);
cursor.continue();
}
};
};
編集:
これは、indexDB にすべての行を返させてから、JavaScript で絞り込むことで実現できました。しかし、パフォーマンスに関しては、より良いアプローチが必要です。
if (cursor.value.materialNumber.indexOf(materialNumber) != -1){
//add result...
}