在searchterm的开始和结束时使用IndexedDB通配符

时间:2013-08-09 08:07:55

标签: wildcard indexeddb

This topic解释了如何使用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...
}

1 个答案:

答案 0 :(得分:0)

这不是idb的用途。如果要进行文本搜索,请将文本解析为标记,存储标记,在标记上使用索引,并对索引执行查找以获取指向全文的指针。