前端数据库indexDB删除数据delete()方法

这篇博客探讨了在前端使用IndexDB数据库时遇到的数据删除问题。作者尝试通过IDBObjectStore.delete方法删除特定键值的数据,但操作未成功。问题在于直接传入变量无法完成删除,而直接赋值则可以。作者还尝试了使用游标方法删除,同样需要直接赋值才能生效。最后,通过循环判断并直接赋值解决了删除问题。
摘要由CSDN通过智能技术生成
                  indexDB删除的错误问题

IDBObjectStore.delete(keyorKeyRange)

在这里插入图片描述

             在学习前端indexDB数据库遇到了问题
             想删除数据库其中的一条数据时候代码
             如下:
function remove(key) {
  var request = db.transaction(['person'], 'readwrite')
    .objectStore('person')
    .delete(key);

  request.onsuccess = function (event) {
    console.log('数据删除成功');
  };
}
//key数据由外部传入,是一个变量
 此时传入key的值是对的,但是一直没办法删除
 数据库没有任何改变。     
 尝试直接令key==1,删除成功了。
换一种方法

尝试使用cursor delete方法

function remove() {
        // var ts = db.transaction( ['imgLists'] ,'readwrite' );
        //var city_os = ts.objectStore('imgLists')
        var ts2 = db.transaction( ['imgLists'] ,'readwrite' );
        var city_os2 = ts2.objectStore('imgLists');
        // 在 city 存储对象上创建一个游标
        var req3 = city_os2.openCursor();
        req3.onsuccess = function (event) {
            var cursor = event.target.result;
            if (cursor) {
                console.log('ID: ' + cursor.key);
                console.log('Code: ' + cursor.value.code);
                console.log('Name: ' + cursor.value.name);

                if (cursor.key === fgh) {
                //fgh为一个变量存储要删除数据的主键值
                    cursor.delete()
                    console.log('删除成功')
                }

                cursor.continue();
            } else {
                console.log('No more data');
            }
        }
    }
此时,还是不能够删除
必须直接使得fgh直接赋值
比如令变量=1

使用循环判断遍历

 var fgh2=string.substring(0,string.length-9);
 for(var i=0;i<30;i++)//循环判断删除数据的ID主键值(只能用这中直接赋值的方法,不然delete失效)
                    {
                        if(fgh2==i){
                            fgh=i;
                            console.log(fgh);
                            break;
                        }
                    }

删除成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值