我在IndexedDB中有以下代码:
var request = objectStore.add({ entryType: entryType, entryDate: t});
现在,我想知道刚刚添加的记录的键。如何操作?
我找到了this article,以及以下代码:
var data = {"bookName" : "Name", "price" : 100, "rating":"good"};
var request = objectStore.add(data);
request.onsuccess = function(event){
document.write("Saved with id ", event.result)
var key = event.result;
};
这对我不起作用-键显示为未定义。我想我在这里缺少了一些基本的东西!
4条答案
按热度按时间ngynwnxp1#
浏览此代码
希望这段代码可以检索最后插入的记录的关键字
kninwzqo2#
The spec is written for user agent, not for developer. So it is confusing. Key generator is provided by the user agent.
Any
event
object that is received byonsuccess
handler always haveevent.target.result
. It is the key you are looking for. The key is auto generated if you don't provide it, assuming you set autoIncrement to true.It is documented in Step 8: as follow:
vlf7wbxs3#
这里的诀窍是知道如何使用短语迭代搜索,直到你找到你需要的。我以前从未听说过IndexedDB,但似乎已经找到了你想要的。
我输入了"IndexedDB" into a search engine,发现了这个。这产生了短语“密钥生成器”,所以我输入了searched for that as well,这导致了this和这个。
StackOverflow链接讨论了如何使用UUID,当然UUID可以在JavaScript中生成,最后一个链接似乎有一些示例,可以实现您想要的功能。
agxfikkp4#
如果您正在为IndexedDB使用
idb
Promise Package 器,那么新键就是add()
调用的返回值:当然,请记住,只有在传递给
createObjectStore()
的选项中包含autoIncrement: true
时,这才有效。