gpt4 book ai didi

javascript - 如何使用非键属性上的条件来迭代 IndexedDB objectStore?

转载 作者:行者123 更新时间:2023-12-02 22:44:10 27 4
gpt4 key购买 nike

我有一个选择框,我想用 objectStore 中的值自动填充它,因为我需要像这样迭代它:“从表中选择 COL1,其中 COL2 = 'myvalue'”,这是我的代码:

var db;
var req = indexedDB.open("DB");
req.onsuccess = function (e) {
db = req.result;
var tran = db.transaction("store");
var singleKeyRange = IDBKeyRange.only("myvalue"); //the value I want to reach from COL2
tran.objectStore("store").openCursor(singleKeyRange).onsuccess = function(e) {
var cursor = e.target.result;
if (cursor) {
var opt = document.getElementById("selectbox");
var option = document.createElement("option");
var optionText=document.createTextNode(cursor.value.COL1); //the matching values in COL1
option.appendChild(optionText);
opt.appendChild(option);
cursor.continue();
}
}
};

我已在 objectStore 中正确索引了所有值,只是现在不知道如何通过其他值获取值。

最佳答案

这里是一个在非索引列上搜索项目的示例,您需要遍历所有项目并比较值并将它们添加到列表中,然后您可以返回结果集。

function SearchItems( keyPath, value, requestNo, callback){
var initOpenReq = indexedDB.open(baseName);
initOpenReq.onsuccess = function() {
var db = initOpenReq.result;
var transaction = db.transaction(objectStoreName, 'readonly');
var objectStore = transaction.objectStore(objectStoreName);
var cursorRequest = objectStore.openCursor();
var agregate = [];
cursorRequest.onsuccess = function (event){
if (event.target.result){
if(event.target.result.value[keyPath] && event.target.result.value[keyPath] == value){ //compare values
agregate.push(event.target.result.value);
}
event.target.result['continue']();
}
};

transaction.oncomplete = function (event) {
callback(agregate); // return items
};
}
}

关于javascript - 如何使用非键属性上的条件来迭代 IndexedDB objectStore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com