Javascript “错误”;提供给操作的数据不符合要求”;在indexedDB中添加对象时
当我尝试使用.add将对象添加到objectStore时,控制台显示以下错误: DataError:提供给操作的数据不符合要求。如果有人能告诉我这个错误是从哪里来的,这对我真的很有帮助。代码如下:Javascript “错误”;提供给操作的数据不符合要求”;在indexedDB中添加对象时,javascript,indexeddb,Javascript,Indexeddb,当我尝试使用.add将对象添加到objectStore时,控制台显示以下错误: DataError:提供给操作的数据不符合要求。如果有人能告诉我这个错误是从哪里来的,这对我真的很有帮助。代码如下: var request = objStore.add({tarea: todo, clase: "pendiente"}); var db; function create_to_do(){ var todo = document.querySelector('#the-do').value;
var request = objStore.add({tarea: todo, clase: "pendiente"});
var db;
function create_to_do(){
var todo = document.querySelector('#the-do').value;
var transaction = db.transaction("to_do", "readwrite");
transaction.oncomplete = function(eve){
console.log("all done¡")
}
transaction.onerror= function(eve){
console.log("something went wrong: "+ eve.target.errorCode);
};
var objStore = transaction.objectStore("to_do");
var request = objStore.add({tarea: todo, clase: "pendiente"});
request.onsuccess = function(eve){
console.log("all done¡");
console.log(eve.target.result);
};
}
function indexDB(){
var request = indexedDB.open('todos', 1);
request.onsuccess = function (evt) {
db = this.result;
console.log("Database Opened");
};
request.onerror = function (evt){
console.log("OpenDB error: " + evt.target.errorCode);
};
request.onupgradeneeded = function(evt){
store = evt.currentTarget.result.createObjectStore("to_do",
{keyPath: 'id', autoIncrement: true});
store.createIndex('clase', 'clase', {unique: false});
console.log("index created");
};
}
这是一个简单的打字错误。
createObjectStore()
方法的自动增量选项必须拼写为autoIncrement
(大写I),而不是autoIncrement
所发生的情况是,您的对象存储是在没有密钥生成器的情况下创建的,因此在添加对象时,它会根据密钥路径查找
id
属性。由于该属性不存在,因此您将获得数据错误尝试keyPath:“keyPath”
或autoIncrement:false
一旦您提供“主键”,您必须将autoIncrement设置为false查看它您正在尝试保存DOM对象。根据其中的内容,您将或将无法保存数据。尝试将tarea属性保留在对象之外并保存它。让我知道tarrea地产里有什么
var todo = document.querySelector('#the-do').value;
var request = objStore.add({tarea: todo, clase: "pendiente"});
对不起,谢谢你花了这么多时间,但不是那样,我确实更改了它,而且密钥路径也变了,哈哈,但不是那样,tarea属性的价值是什么?如果我看一下这个例子,它在你的例子中是一个变量。如果这是一个函数或无法在JSON中序列化的东西,则无法保存它。这是正确的。IDB中存储的东西必须能够被结构化克隆。DOM对象不工作。