gpt4 book ai didi

javascript - 可以使用游标找到 IndexedDB 对象,但不能通过 get(key) 找到

转载 作者:行者123 更新时间:2023-12-03 08:21:47 25 4
gpt4 key购买 nike

最初,我编写了这段代码来使用其键搜索“section”对象:

var section = {};
var getSection = store.get(id);
getSection.onsuccess = function(e){
section = e.target.result;
}

但无法找到该对象(部分为“未定义”),即使通过浏览器检查具有相应键的对象显然存在。此外,以下代码确实有效:

var section = {};
var transaction = db.transaction(['section'], 'readonly');
var store = transaction.objectStore('section');
var index = store.index("section_id");
index.openCursor().onsuccess = function(e){
var cursor = e.target.result;
if (cursor){
if (cursor.value['section_id'] == id){
section = cursor.value;
}
cursor.continue();
}
}

它产生相同的结果,但后者慢得多。我想要第一种工作方式。为什么不是?

作为引用,这是我对“section”的 objectStore 定义:

        if (!thisdb.objectStoreNames.contains("section")){
var objectStore = thisdb.createObjectStore("section", {keyPath:"section_id"});
// Add properties
objectStore.createIndex("section_id", "section_id", {unique:true});
objectStore.createIndex("catalog_num", "catalog_num", {unique:false});
objectStore.createIndex("title", "title", {unique:false});
objectStore.createIndex("dow", "dow", {unique:false});
objectStore.createIndex("meeting_days", "dow", {unique:false});
objectStore.createIndex("start_time", "start_time", {unique:false});
objectStore.createIndex("end_time", "end_time", {unique:false});
objectStore.createIndex("instructor", "instructor", {unique:false});
objectStore.createIndex("section", "section", {unique:false});
objectStore.createIndex("room", "room", {unique:false});
objectStore.createIndex("overview", "overview", {unique:false});
objectStore.createIndex("requirements", "requirements", {unique:false});
objectStore.createIndex("univ_num", "univ_num", {unique:false});
objectStore.createIndex("term_id", "term_id", {unique:false});
objectStore.createIndex("course_symbol", "course_symbol", {unique:false});

最佳答案

您可以尝试使用 store.index('section_id').get(id); 而不是 store.get(id); 作为快速解决方案。鉴于您的键路径被定义为指向section_id,这似乎很奇怪,因为我也希望能够正常工作。

第二个问题可能是数据类型冲突。您是否混合了字符串和数字?您是否存储字符串然后按数字或类似的方式查询?因为您的光标示例使用 == 这是类型不敏感的。要快速测试这一点,请尝试使用 === 进行光标测试,看看它是否仍然有效。如果失败,您很可能会执行一些操作,例如将 id 存储为字符串,然后使用数字 id 进行查询。

关于javascript - 可以使用游标找到 IndexedDB 对象,但不能通过 get(key) 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715873/

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