问老师一个关于onsuccess的问题

来源:3-3 indexDB(3)

学习plus

2020-10-23 20:44:16

# 具体遇到的问题
第一次没有表的时候刷新可以出现内容,但是再次刷新后,就不出现这个了,之前indexedDB.open的onsuccess方法可以理解,每次尝试打开,成功后自动执行。

但这里:

var requestNode = store.getAll();

requestNode.onsuccess

按道理,每次尝试获取全部数据成功后,不也应该自动执行吗,怎么就不运行了。

# 报错信息的截图

# 相关课程内容截图
http://img.mukewang.com/climg/5f92cf6609e4e5f611980358.jpg

# 尝试过的解决思路和结果
http://img.mukewang.com/climg/5f92cf8d09f91fb003080689.jpg# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

写回答

2回答

好帮手慕慕子

2020-10-24

同学你好, 由于表中已经添加过内容了,刷新页面的时候会再次使用add添加相同的数据,造成异常,导致无法显示内容。建议:已经存在表之后,可以去掉如下代码,再测试就可以了。

http://img.mukewang.com/climg/5f93bebc099f2d8113520528.jpg

祝学习愉快~

0

学习plus

提问者

2020-10-23

补充代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul id="data"></ul>
<script type="text/javascript">
var dataShow = document.querySelector('#data');
var request = indexedDB.open('testDB',8);
request.onsuccess = function(){
console.log('数据库创建或打开成功')
};
request.onerror = function(){
console.log('数据库读取失败')
};
request.onupgradeneeded = function(){
console.log('数据库版本升级成功,当前版本号为' + this.result.version)
this.result.createObjectStore('test1' + this.result.version,{autoIncrement:true});
this.result.createObjectStore('test2' + this.result.version,{keyPath:"id"});
}

var json = [{
"id":322,
"name":"Lan",
"age":33
},{
"id":21,
"name":"Sky",
"age":21
},{
"id":340,
"name":"Blue",
"age":55
},{
"id":53,
"name":"Tom",
"age":15
},]

setTimeout(function(){
var db = request.result;
var transaction = db.transaction('test2' + request.result.version,'readwrite');
var store = transaction.objectStore('test2'+request.result.version);
for(var i = 0; i < json.length; i++){
store.add(json[i]);
}
var requestNode = store.getAll();
requestNode.onsuccess = function(){
for(var i = 0; i < requestNode.result.length; i++){
var child = document.createElement('li');
child.innerHTML = '名字叫' + requestNode.result[i].name + ',今年' + requestNode.result[i].age + '岁。';
dataShow.append(child);
}
}
},300);
</script>
</body>
</html>


0

0 学习 · 6815 问题

查看课程