gpt4 book ai didi

indexeddb - 将记录添加到带有 IndexedDB 的 objectStore 时如何指定键?

转载 作者:行者123 更新时间:2023-12-01 11:47:50 24 4
gpt4 key购买 nike

试图学习 IndexedDB 的概念和 API,我正在努力弄清楚如何使用 IDBObjectStore.add 方法为 objectStore 指定键。根据规范,第一个参数是值,第二个可选参数是键。当我提供一个具有 Bar 作为值属性的对象(它是一个对象)时,我可以添加一条记录,但是当我尝试通过第二个参数通过对象传递键时,添加尝试失败,详细信息我得到的是:

代码:5。
消息:数据错误:DOM IDBDatabase 异常 5。
名称:数据错误。
堆栈:错误:提供的数据不符合要求。
在 IDBOpenDBRequest.dbOpenRequest.onsucces

代码示例如下:

var dbOpenRequest = window.indexedDB.open("sandbox")

dbOpenRequest.onupgradeneeded = function (event) {
var db = dbOpenRequest.result;

var fooObjStore = db.createObjectStore("Foo", {
keyPath: "Bar",
autoIncrement: false
});
}

dbOpenRequest.onsuccess = function (event) {
var db = dbOpenRequest.result;
var transaction = db.transaction(["Foo"], "readwrite");
transaction.oncomplete = function () {
console.log("Transaction complete");
}

transaction.onerror = function (event) {
console.error("Transaction error! " + event.target.webkitErrorMessage);
}

var fooObjStore = transaction.objectStore("Foo");
try {
//Works
var fooRequest = pipelineObjStore.add({ data: "myData", Bar: "1" });

//Fails
fooRequest = pipelineObjStore.add({ data: "myData" }, "2" );

//Fails
fooRequest = pipelineObjStore.add({ data: "myData" }, { Bar: "3" });
}
catch (e) {
console.error("Code: " + e.code
+ ". \nMessage: " + e.message
+ ". \nName: " + e.name
+ ". \nStack: " + e.stack);
}

fooRequest.onsuccess = function (event) {
console.log("Pipeline request successful");
}

fooRequest.onerror = function (event) {
console.error("Pipeline request error. " + event.target.webkitErrorMessage);
}
}

dbOpenRequest.onerror = function (event) {
console("Error ");
}

我最终想要做的是创建一个 objectStore,它具有值的字符串并单独提供键。是否可以这样做,或者我是否必须提供一个包含我的字符串数据的对象作为属性和另一个具有键的属性的一部分?

最佳答案

您正在使用内联 key 。但是你的情况需要object store with out-of-line key .

var fooObjStore = db.createObjectStore("Foo", {
autoIncrement: false
});

那你 add record使用您的外部 key ,此处为“1”。
var fooRequest = fooObjStore.add({data: "myData"}, "1");

关于indexeddb - 将记录添加到带有 IndexedDB 的 objectStore 时如何指定键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348497/

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