使用inedx索引获取数据,事务被打断?

使用inedx索引获取数据,事务被打断?

 <script type="text/javascript">
        var myDB = indexedDB.open("myDB", 1);

        myDB.onupgradeneeded = function (e) {
            console.log(myDB);
            var db = e.target.result;
            var myStore = null;
            console.log(db);
            if (!db.objectStoreNames.contains("myStore")) {
                myStore = db.createObjectStore("myStore", {
                    autoIncrement: true,
                })
            }
            myStore.createIndex("myStore", "name", {
                unique: true,
            })
        }
        var data = [{
            "name": "alex",
            "age": "18"
        }, {
            "name": "manfrend",
            age: "20"
        }, {
            "name": "leo",
            "age": "21",
        }]
        setTimeout(function () {
            var db = myDB.result;

            var transaction = db.transaction("myStore", "readwrite");
            var store = transaction.objectStore("myStore");
            for (let i = 0; i < data.length; i++) {
                store.put(data[i]);
            }
            var index = store.index("myStore");
            index.get("alex").onerror = function (e) {
                console.log(e);

            }
            index.get("alex").onsuccess = function (e) {
                console.log(e);

            }

        }, 300)
    </script>

报错:

http://img1.sycdn.imooc.com//climg/5eb951240973188615140494.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,每次刷新执行的时候都会插入一遍数据,但是代码中设置是唯一的,第二遍执行的时候插入不了

http://img1.sycdn.imooc.com//climg/5eba3ed70933b5d105310096.jpg

可以去掉试试

http://img1.sycdn.imooc.com//climg/5eba3ee60952020c05010035.jpg

然后卸载数据库进行多次刷新,就可以看到大量数据被插入了

http://img1.sycdn.imooc.com//climg/5eba3f1d09ef476a15110543.jpg

输出的e也是成功的。

祝学习愉快!

好帮手慕星星 2020-05-12 10:11:06

同学你好,这边测试结果和同学是不一样的,是成功的

http://img1.sycdn.imooc.com//climg/5eba049609a1bd7413720582.jpg

同学是不是多次刷新重复执行了,建议将数据库删除再重新测试下

http://img1.sycdn.imooc.com//climg/5eba05ac096abe7410160455.jpg

删除之后再刷新页面试试。

祝学习愉快!

  • 提问者 慕移动0180416 #1
    试了一下,第一次运行的时候可以成功创建并且获取数据,第二次刷新就会抛出这个错误。这个是什么原因呢?难道每次获取数据都要删除库?
    2020-05-12 13:38:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师