- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我必须承认我是 indexedDB 的新手
我写了一段indexedDB
的简单代码,如下:
function go() {
var req = window.indexedDB.open("Uploader", 1),
db;
req.onerror = function (e) {
console.log("Error");
};
req.onsuccess = function (e) {
db = e.target.result;
};
req.onupgradeneeded = function (e) {
console.log(db);
db = e.target.result;
var os = db.createObjectStore("Files", { keyPath: "files" });
os.createIndex("text", "text_file", { unique: false });
var trans = db.transaction(["text"], "readwrite");
var objectstore = trans.objectStore("text");
var addreq = objectstore.add("Instructions.js");
addreq.onsuccess = function (e) {
console.log("Success!");
console.dir(e);
};
};
}
它给我的错误是 Uncaught InvalidStateError: Failed to execute 'transaction on 'IDBDatabase': A version change transaction is running.
它说 版本更改事务正在运行
但据我研究,版本更改事务是通过 IDBFactory.open
方法进行的,我还没有t used 并且我指定了这个事务是readwrite
并且这个事务是在onupgradeneeded
那么为什么会出现错误呢?
我必须承认我是 indexedDB 的新手
最佳答案
versionchange 事务还允许您读写。您只需访问在 onupgradeneeded 函数中为您创建的交易。
function go() {
var req = indexeddb.open(...);
req.onupgradeneeded = function(event) {
// note that event.target === req === this, use whatever you like
var db = event.target.result;
// createObjectScore implicitly uses the versionchange txn running
// here, without telling you, basically a convenience function
var objectStore = db.createObjectStore(...);
// the important part that i am describing in this answer,
// grab the handle of the versionchange txn
// that is already running and was created for you
// note again that event.target === req, you could just do
// req.transaction or this.transaction here.
// note this is a property of the open request, not a method. do NOT
// confuse this with the method transaction() that is used to create a
// new transaction.
var txn = event.target.transaction;
// note that txn.objectStore(...) will work here, because the
// createObjectStore call earlier guarantees the store exists here
// within the implicit upgrade txn
var addRequest = txn.objectStore(...).add('value');
// side note: if in previous line we did:
// var objectStoreRetrievedFromTxn = txn.objectStore(...);
// then that variable is equal to the same variable returned from
// db.createObjectStore earlier in this function. Both are simply handles
// (references, pointers, whatever you want to call it) to the store.
// kind of dumb, but you could do this just to log something
addRequest.onsuccess = function() {console.log('Success!');};
};
// called once upgrade txn completes (if it even needed to run),
// and db is opened
req.onsuccess = function(event) {
console.log('upgrade txn completed and db is now connected');
// here, create whatever readwrite or readonly txns you want, note these
// txns are separate from and different than the versionchange txn from
// before, because that is a unique transaction only available within
// onupgradeneeded. however, both versionchange and readwrite are similar
// in that both support calls to put or add
};
}
您遇到错误是因为您在版本更改事务仍在运行时尝试启动第二个事务。
关于javascript - 未捕获的 InvalidStateError : Failed to execute 'transaction' on 'IDBDatabase' : A version change transaction is running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709976/
我刚开始学习 websockets,我得到了一个奇怪的错误: window.onload = function(){ var service = new WebSocket(
我正在编写一个 JavaScript/HTML5 Windows 8 应用程序。写入 IndexedDB 时偶尔会出现 InvalidStateError。我的功能在下面,它发生在第一行。有没有办法保
我正在建立一个网站,当您将鼠标指针移到视频上时,视频就会开始播放。当用户离开视频区域时,它会暂停并跳回第一帧。这在除 IE 之外的所有浏览器中都能完美运行。当我打开开发控制台时,它会在处理停止功能的代
我正在集成一个使用 IndexedDB 的 javascript 库,但是当 Firefox 处于隐私浏览/窗口模式时它会“粗鲁地”失败。该库返回一个 500 内部错误,同时 Firefox 向控制台
我已经阅读了另一个线程,它并不好:Put data into JSON with Jquery 每当我尝试对对象数组进行 JSON.stringify 时,我都会收到一条错误消息: Uncaught
我已经使用 vue-cli 工具配置了一个简单的 Vue 项目: vue init webpack my-project 现在我想在页面呈现之前通过网络套接字发送一些信息。由于我不想将此逻辑绑定(bi
什么会导致 Promise 在此处被 'InvalidStateError' 拒绝? const SERVICE_WORKER_VERSION = "3.0.0"; // is updated in
当我在 iOS 上调用 Audio.stopAudio() 时,会导致 InvalidStateError。它引用了 Three.js:38399。有人在使用 Three.js/A-Frame 时遇到
使用此处提供的基本示例:https://developer.here.com/javascript-apis/documentation/v3/maps/topics/quick-start.html
我正在为桌面共享编写一个简单的 WebRTC Google Chrome 扩展程序。我尝试使用 getusermedia,但每次调用错误回调函数时返回的错误是: NavigatorUserMediaE
我无法将 Angular2 前端与 Spring 的 websocket 后端连接起来。 Spring配置xml文件:
我收到此错误消息: Uncaught InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInp
情况 我有一个类似网格的无序列表,其中包含 144 (90px x 90px) 个图像 (12x12),可以旋转。我的最终目标是获取 144 个图像网格并将其保存为 1 个图像。 当前解决方案 我当前
当在 Javascript 中使用 stomp.js 和 sockjs 时,我可以与 Spring Boot 后端很好地连接。 当在 Angular5 中使用 stompjs 和 sockjs 时,我
以下适用于 Chrome 但不适用于 Firefox: var myVideo = document.getElementById('myVideo') myVideo.currentTime = 5
我正在编写一个 Web 应用程序,我想在其中使用 SSL 通过 Tornado WebSockets 从客户端向服务器端发送 JSON 代码。当我想建立连接时,谷歌浏览器在控制台日志中显示错误: Un
我在 IE11 中遇到这个错误,我临时更改了一个数字上的所有变量,但我无法摆脱这个错误。 audio.currentTime = 10; 错误看起来像: SCRIPT5022: InvalidStat
在 Firefox 17.0.1 中,当我尝试打开 IndexedDB 数据库时,Firebug 控制台向我显示了一个InvalidStateError 异常。还引发了 request.onerror
我正在创建一个 webRTC 视频聊天,当从 firefox 发起调用并且接收者正在使用 chrome 时,它会向调用者显示所有事件成员,此错误显示为“未捕获( promise 中)DOMExce
我在实现绕过 Internet Explorer 中“下载”属性缺失行为的解决方案时遇到了一些问题。 用户可以下载三种类型的文件: CSV geoJSON 知识分子语言 所以在 Chrome 和 FF
我是一名优秀的程序员,十分优秀!