创建表里面的数据失败

来源: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

同学你好, 老师这边测试同学的代码, 存在的问题如下所示

  1. 因为js代码从上到下执行,需要在数据库创建完成之后,在操作数据库, 所以需要保证数据库的创建和操作需是异步的,那么就应该将transaction这几步操作放在定时器中

  2. 没有声明transaction变量就直接使用了, 也会导致代码报错

建议修改:

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

同学可以测试一下哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

0

0 学习 · 6815 问题

查看课程