onsuccess和oncomplete回调对indexedDb add事务不起作用
onsuccess and oncomplete call back is not working for indexedDb add transaction
我试图在IndexedDb添加事务的onsuccess回调中有一个函数,但由于某种原因,onsuccess回调从未被调用。我基本上尝试向IndexedDb添加一个电影对象,在回调中,我尝试通过迭代光标来显示IndexedDb中的所有电影。
我希望新添加的电影也会显示。但是回调失败了。下面是我的代码。谁能告诉我是什么问题吗?
var movieName=document.getElementById('movieInput').value;
var movieDataToStore = [{ movieid: "5", name: movieName, runtime:"60"}];
var request = indexedDB.open("movies", 1);
request.onsuccess = function(event) {
db = event.target.result;
//var transaction = window.db.transaction(["movies"], "readwrite");
//alert(db.transaction("movies").objectStore("movies").add(null));
var requestDataadd=window.db.transaction(["movies"],"readwrite").objectStore("movies").add(movieDataToStore[0]);
requestDataadd.onsuccess = function(event) {
window.db.transaction("movies").objectStore("movies").openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
alert("CURSOR: movie: " + cursor.key + " has name " + cursor.value.name);
cursor.continue();
} else {//writeLog("CURSOR: No more entries!");
alert("Cursor at the Load Button unabe to open");
}
};
};
};
您正在使用两个事务。由于第二个事务是在第一个事务完成之前创建的,因此它们都获得了初始状态的快照。
您必须重用第一个事务或等到它完成后再启动第二个事务。下面是重用事务:
var tx = window.db.transaction(["movies"],"readwrite");
var requestDataadd = tx.objectStore("movies").add(movieDataToStore[0]);
requestDataadd.onsuccess = function(event) {
tx.objectStore("movies").openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
alert("CURSOR: movie: " + cursor.key + " has name " + cursor.value.name);
cursor.continue();
} else {//writeLog("CURSOR: No more entries!");
alert("Cursor at the Load Button unabe to open");
}
};
};
您是否收到警告"光标在加载按钮无法打开" ?
乍一看,我认为问题在于requestDataadd
请求失败,因为您之前已经(成功地)插入了此对象一次,因此您得到了重复键错误。但是您没有为requestDataadd
请求定义onerror
侦听器。
但是,如果实际上调用了requestDataadd
的onsuccess侦听器(并且您得到一个警报),则不可能出现这种情况。
我还看到您没有为openCursor
请求定义onerror
侦听器。你可能想要改变它来获得更多的洞察力。通常,您应该同时定义onerror
和onsuccess
处理程序。
相关文章:
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 贝宝赢了't将沙箱事务数据发送到IPN
- 如何jQuery-Add按钮最多插入10个新输入
- 在不兼容的接收器上调用的方法Set.prototype.add未定义
- Add a class if var < 0 jquery
- Netsuite Suitelet:在不达到治理限制的情况下,遍历事务行项目的列表加载和提交记录
- jquery.html有效,但是.add不行;t
- 这个 add(x) 函数是如何工作的
- Sails.js/Waterline.add()和.remove()仅适用于第二次调用
- Backbone - Collection.add() / Collection.create() 之间的区别
- 我想做一个Web幻灯片事务处理
- 在什么情况下,Array.observe的“add”事件会触发
- Javascript add class 不起作用
- 从sql填充Jqgrid的自定义Add函数中的下拉数据
- "由于页面导航“,尚未完成的IndexedDB事务已中止”;
- Ajax成功上的Phonegap WebSQL事务不起作用
- jQuery过度使用.add()
- counter是在单击add字段时递增值,而不是在单击remove字段时递减值
- 电话间隙等待数据库事务完成
- onsuccess和oncomplete回调对indexedDb add事务不起作用