Html IndexedDB错误:尝试对不允许突变的数据库执行突变操作
为什么我会犯这个错误?我的数据库和对象存储是否存在?我疯了D非常感谢您的帮助Html IndexedDB错误:尝试对不允许突变的数据库执行突变操作,html,indexeddb,Html,Indexeddb,为什么我会犯这个错误?我的数据库和对象存储是否存在?我疯了D非常感谢您的帮助 谢谢我刚刚在chrome和MacOSX上试用safari,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象) 旧的chrome使用1代替“读写”,但我不认为这是一个原因 我刚刚在chrome和MacOSX上的safari上进行了尝试,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象) 旧的chrome使用1代替“读写”,但我不认为这是一个原因 这样的错误太多了。只有本
谢谢我刚刚在chrome和MacOSX上试用safari,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象)
旧的chrome使用1代替“读写”,但我不认为这是一个原因 我刚刚在chrome和MacOSX上的safari上进行了尝试,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象)
旧的chrome使用1代替“读写”,但我不认为这是一个原因 这样的错误太多了。只有本文说明了原因----- 使用IndexedDB,我们数据库上的每个操作或事务都必须在回调函数中发生 这是我的简单示例,请使用chrome的devtool->resource->indexedDB检查它;(如果indexedDB中没有任何内容,请尝试刷新浏览器) html部分:
schema = {stores: [{name: 'test'}]}
st = new ydn.db.Storage('test1', schema)
// ... wait for async
db = st.db()
db.transaction(['test'], 'readwrite')
你需要做什么?
保存条目
脚本部分:
<form id="form1">
<label for="task">What do you need to do?</label>
<input type="text" name="task" id="task" value="" required>
<button type="submit" id="submit">Save entry</button>
</form>
var idb=indexedDB.open('niangzi10',2);
var dbobject;//定义一个全局变量来保存数据库对象
idb.onsuccess=函数(evt){
控制台日志(“成功”);
if(dbobject==未定义){
dbobject=evt.target.result;
}
}
idb.onupgradeneeded=函数(evt){
dbobject=evt.target.result;
如果(evt.oldVersion<1){
createObjectStore('tasks',{autoIncrement:true});
}
}
//回调函数中的事务操作
var form1=document.getElementById('form1');
表格1.addEventListener('submit',函数(evt){
"严格使用",;
evt.preventDefault();
var entry={},事务,对象存储,请求;
entry={name:document.querySelector(#task”).value};
//打开一笔交易进行写作
transaction=dbobject.transaction(['tasks'],'readwrite');
objectstore=transaction.objectstore('tasks');
//保存条目对象
请求=objectstore.add(条目);
transaction.oncomplete=函数(evt){
警报(““+”document.querySelector(“#task”).value+“”已插入indexedDB;请使用chrome的devtool->resource->indexedDB(如果没有,请刷新浏览器)进行检查);
};
});
这样的错误太多了。只有本文说明了原因----- 使用IndexedDB,我们数据库上的每个操作或事务都必须在回调函数中发生 这是我的简单示例,请使用chrome的devtool->resource->indexedDB检查它;(如果indexedDB中没有任何内容,请尝试刷新浏览器) html部分:
schema = {stores: [{name: 'test'}]}
st = new ydn.db.Storage('test1', schema)
// ... wait for async
db = st.db()
db.transaction(['test'], 'readwrite')
你需要做什么?
保存条目
脚本部分:
<form id="form1">
<label for="task">What do you need to do?</label>
<input type="text" name="task" id="task" value="" required>
<button type="submit" id="submit">Save entry</button>
</form>
var idb=indexedDB.open('niangzi10',2);
var dbobject;//定义一个全局变量来保存数据库对象
idb.onsuccess=函数(evt){
控制台日志(“成功”);
if(dbobject==未定义){
dbobject=evt.target.result;
}
}
idb.onupgradeneeded=函数(evt){
dbobject=evt.target.result;
如果(evt.oldVersion<1){
createObjectStore('tasks',{autoIncrement:true});
}
}
//回调函数中的事务操作
var form1=document.getElementById('form1');
表格1.addEventListener('submit',函数(evt){
"严格使用",;
evt.preventDefault();
var entry={},事务,对象存储,请求;
entry={name:document.querySelector(#task”).value};
//打开一笔交易进行写作
transaction=dbobject.transaction(['tasks'],'readwrite');
objectstore=transaction.objectstore('tasks');
//保存条目对象
请求=objectstore.add(条目);
transaction.oncomplete=函数(evt){
警报(““+”document.querySelector(“#task”).value+“”已插入indexedDB;请使用chrome的devtool->resource->indexedDB(如果没有,请刷新浏览器)进行检查);
};
});
您使用的浏览器是什么?另外,我知道使用IndexedDB这不是世界上最简单的事情,但是如果你能发布一个展示这个问题的自包含测试用例,你将有更好的机会得到一个好的答案。你使用的是什么浏览器?另外,我知道使用IndexedDB这不是世界上最简单的事情,但是如果您可以发布一个显示此问题的自包含测试用例,您将有更好的机会得到一个好的答案。谢谢,但我发现了错误:我没有等到我的objectstore创建后才进行事务处理。谢谢,但我发现了错误:我没有等到我的objectstore创建后才进行事务处理。