gpt4 book ai didi

indexeddb - IDBKeyRange.only 在 IE 中的复合索引上

转载 作者:行者123 更新时间:2023-12-01 09:24:43 27 4
gpt4 key购买 nike

我有以下代码:

    this.getChildren = function (db, parentId, foldersOnly, callback, finishedCallback) {
var transaction = db.transaction("tree", "readonly");
var objectStore = transaction.objectStore("tree");

var handleResult = function (event) {
var cursor = event.target.result;
if (cursor) {
callback(cursor.primaryKey, cursor.value);
cursor.continue();
} else {
finishedCallback();
}
};

if (foldersOnly) {
// Only find records with the correct parentId and IsFolder == 1
var range = IDBKeyRange.only([parentId, 1]);
var index = objectStore.index('ParentId IsFolder');
index.openCursor(range).onsuccess = handleResult;
} else {
var range = IDBKeyRange.only(parentId);
var index = objectStore.index('ParentId');
index.openCursor(range).onsuccess = handleResult;
}
};

如果foldersOnly 为false,那么它适用于所有浏览器。但是如果我传入 true 那么它在 IE 中不起作用。我刚刚得到“数据错误”。

我也试过

var range = IDBKeyRange.bound([parentId, 1], [parentId, 1]);

有人有什么建议吗?

编辑:

这些是索引的创建方式:

 treeObjectStore.createIndex("ParentId", "ParentId", { unique: false });
treeObjectStore.createIndex("ParentId IsFolder", ['ParentId', 'IsFolder'], { unique: false });

最佳答案

IE 不支持复合索引。

编辑:

作为一种解决方法,请尝试在您的对象中创建单个属性,并在此属性上创建单个索引。在您的情况下,请尝试“路径”之类的东西?您必须使所有围绕添加/更新的 bizlogic 复杂化,确保每次都更新这个派生字段,但至少它可以工作。

例如,尽管很烦人,但为每个对象创建一个派生字符串属性:ParentId + ':' + (IsFolder?'1':'0')。

关于indexeddb - IDBKeyRange.only 在 IE 中的复合索引上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204536/

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