Javascript 获取IndexedDB中添加记录的密钥

Javascript 获取IndexedDB中添加记录的密钥,javascript,jquery,indexeddb,Javascript,Jquery,Indexeddb,我在IndexedDB中有以下代码: var request = objectStore.add({ entryType: entryType, entryDate: t}); 现在我想知道刚才添加的这个记录的密钥。我该怎么做 我找到了,还有这个 代码: 这对我不起作用-键显示为未定义。我想我错过了一些基本的东西 这里的诀窍是知道如何使用短语进行迭代搜索,直到找到所需内容。我以前从未听说过IndexedDB,但似乎已经找到了您想要的 我找到了。这就产生了“密钥生成器”这个短语,因此我找到了和

我在IndexedDB中有以下代码:

var request = objectStore.add({ entryType: entryType, entryDate: t});
现在我想知道刚才添加的这个记录的密钥。我该怎么做

我找到了,还有这个 代码:


这对我不起作用-键显示为未定义。我想我错过了一些基本的东西

这里的诀窍是知道如何使用短语进行迭代搜索,直到找到所需内容。我以前从未听说过IndexedDB,但似乎已经找到了您想要的

我找到了。这就产生了“密钥生成器”这个短语,因此我找到了和

StackOverflow链接讨论了UUID的使用,UUID当然可以在JavaScript中生成,最后一个链接似乎提供了一些示例,可以根据您的需要立即执行操作。

是为用户代理编写的,而不是为开发人员编写的。所以这是令人困惑的。密钥生成器由用户代理提供

onsuccess
处理程序接收的任何
event
对象始终具有
event.target.result
。这是你要找的钥匙。如果不提供该键,则会自动生成该键,前提是将autoIncrement设置为true

步骤8:如下所示:

  • 该算法的结果是关键的
  • 检查一下这个代码

    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.target.result;
    };
    

    希望此代码能够检索上次插入记录的键

    如果您正在使用IndexedDB的
    idb
    Promise包装器,那么新键只是
    add()
    调用的返回值:

    import { openDB } from 'idb';
    
    const db = await openDB(...);
    const tx = db.transaction('mystore', 'readwrite');
    const newId = await tx.store.add({ hello: 'world' });
    await tx.done;
    
    console.log(`Autogenerated unique key for new object is ${newId}`);
    

    当然,请记住,只有在传递给
    createObjectStore()

    的选项中包含
    autoIncrement:true
    时,这才有效。我应该认为IndexedDB有一些文档-那里没有关于这方面的信息吗?我找不到它-有什么想法吗?
    import { openDB } from 'idb';
    
    const db = await openDB(...);
    const tx = db.transaction('mystore', 'readwrite');
    const newId = await tx.store.add({ hello: 'world' });
    await tx.done;
    
    console.log(`Autogenerated unique key for new object is ${newId}`);