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;
}
}
删除成功