创建表里面的数据失败
来源:3-2 indexDB(2)
慕妹2075046
2019-09-30 10:43:36
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var text = indexedDB.open('text',7);
console.log(text);
text.onsuccess = function(){console.log('成功')}
text.onerror = function(){console.log('失败')}
text.onupgradeneeded =function(){
console.log('版本号升级了')
var a = text.result;
a.createObjectStore('text1',{autoIncrement: true});//autoIncrement: true为自增的key
// a.createObjectStore('text2',{keyPath: 'id'});//id为json里的key,还可以替换json里面的其他key值
//
};
var json = [{//json里的内容为表里面的value
"id":100,
"name":"ll",
"age":"1"
},
// {//json里的内容为表里面的value
// "id":12,
// "name":"yy",
// "age":"3"
// }
]
var a=text.result;//找到数据库text
var b = a.transaction('text1','readwrite');//要在创建的表text1中做读写的工作
var c = transaction.objectStore('text1')//读写哪个表
c.add(json)
</script>
</body>
</html>
ConstraintError: Object store named 'text1' already exists at index '0'
1回答
好帮手慕慕子
2019-09-30
同学你好, 老师这边测试同学的代码, 存在的问题如下所示
因为js代码从上到下执行,需要在数据库创建完成之后,在操作数据库, 所以需要保证数据库的创建和操作需是异步的,那么就应该将transaction这几步操作放在定时器中
没有声明transaction变量就直接使用了, 也会导致代码报错
建议修改:
同学可以测试一下哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
相似问题