Html IndexedDB错误:尝试对不允许突变的数据库执行突变操作

Html IndexedDB错误:尝试对不允许突变的数据库执行突变操作,html,indexeddb,Html,Indexeddb,为什么我会犯这个错误?我的数据库和对象存储是否存在?我疯了D非常感谢您的帮助 谢谢我刚刚在chrome和MacOSX上试用safari,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象) 旧的chrome使用1代替“读写”,但我不认为这是一个原因 我刚刚在chrome和MacOSX上的safari上进行了尝试,没有发现任何错误 我执行以下操作(页面加载ydn.db.Storage对象) 旧的chrome使用1代替“读写”,但我不认为这是一个原因 这样的错误太多了。只有本

为什么我会犯这个错误?我的数据库和对象存储是否存在?我疯了D非常感谢您的帮助


谢谢

我刚刚在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创建后才进行事务处理。