1

このトピックでは、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...
}
4

1 に答える 1