update报错了

update报错了

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>


<script type="text/javascript">

var request=indexedDB.open('111',1)

request.onsuccess=function(){

console.log('创建表成功')

}

request.onupgradeneeded=function(){

console.log('版本更新了')

console.log(request.result)

var store=request.result.createObjectStore('test1',{keyPath:'id'})

store.createIndex('test1','id')

}

var json=[{

'id':10,

'name':'b'

},{

'id':11,

'name':'b2'

}

,{

'id':12,

'name':'b2'

}

,{

'id':13,

'name':'b2'

}

,{

'id':14,

'name':'b2'

}

,{

'id':23,

'name':'b3'

}

,{

'id':24,

'name':'b2'

}]

setTimeout(function(){

var db=request.result

var trans=db.transaction('test1','readwrite')

var store=trans.objectStore('test1')

console.log(store)


var index=store.index('test1')

var requestCur=index.openCursor()

requestCur.onsuccess=function(){

var cursor=requestCur.result

if(cursor){

// console.log(cursor.value)

if(cursor.value.name=='b3'){

console.log('1')

cursor.update({

'id':24222,

'name':'b333'

})

}

console.log(cursor.value)

cursor.continue()

}

}


// for (var i=0;i<json.length;i++) {

// var sus=store.put(json[i])

// }

// sus.onsuccess=function(){

// console.log('添加数据成功 add')

// }

},300)

</script>

</body>

</html>

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

正在回答

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

3回答

同学你好,id是默认的主键,是不能修改的。同学如下这样写,是把name设置为游标了,也不能改了哦。

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

建议:不要修改主键与游标的值,可以修改其他的内容,或者添加内容。

可以参考如下:

因为name是游标,所以每个的值,都应该不一样,例:

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

id与name要与原来的一致,不能修改,可以再添加一个属性,例:

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

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

祝学习愉快~

  • 慕粉1905369247 提问者 #1
    那应该怎么设置?才能使用update
    2020-05-15 18:02:36
  • 好帮手慕糖 回复 提问者 慕粉1905369247 #2
    同学你好,老师刚才的例子没有粘贴完,现在可以看下,如上操作就可以使用了。 或者是主键游标都设置为id,对象中保持id的一直,修改其他属性,是第二种回答中的。
    2020-05-15 18:09:04
好帮手慕糖 2020-05-15 15:48:01

同学你好,因为id设置的是主键,也是游标,是不能改变的,改变其他属性即可,例:

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

祝学习愉快~

  • 提问者 慕粉1905369247 #1
    <!DOCTYPE html> <html> <head> <title></title> </head> <body> <script type="text/javascript"> var request=indexedDB.open('111',1) request.onsuccess=function(){ console.log('创建表成功') } request.onupgradeneeded=function(){ console.log('版本更新了') console.log(request.result) var store=request.result.createObjectStore('test1',{keyPath:'id'}) store.createIndex('test1','name') } var json=[{ 'id':10, 'name':'b' },{ 'id':11, 'name':'b2' } ,{ 'id':12, 'name':'b2' } ,{ 'id':13, 'name':'b2' } ,{ 'id':14, 'name':'b2' } ,{ 'id':23, 'name':'b3' } ,{ 'id':24, 'name':'b2' }] setTimeout(function(){ var db=request.result var trans=db.transaction('test1','readwrite') var store=trans.objectStore('test1') console.log(store) var index=store.index('test1') var requestCur=index.openCursor() requestCur.onsuccess=function(){ var cursor=requestCur.result if(cursor){ // console.log(cursor.value) if(cursor.value.name=='b2'){ console.log('1') // 更新数据 cursor.update({ 'id':24222, 'name':'b333' }) //删除数据 // cursor.delete().onsuccess=function(e){ // console.log(e) // console.log('删除成功') // } } console.log(cursor.value) cursor.continue() } } // for (var i=0;i<json.length;i++) { // var sus=store.put(json[i]) // } // sus.onsuccess=function(){ // console.log('添加数据成功 add') // } },300) </script> </body> </html>
    2020-05-15 16:08:42
  • 提问者 慕粉1905369247 #2
    我改成了name 还是报错了
    2020-05-15 16:09:00
好帮手慕糖 2020-05-15 09:34:11

同学你好,老师运行是没有报错的。http://img1.sycdn.imooc.com//climg/5ebdf16b090baec106920102.jpg

同学是执行到哪一步报错了?或者是做了什么操作?可以详细的描述下,便于准确的定位与解决问题。

祝学习愉快~

  • 提问者 慕粉1905369247 #1
    先添加数据 然后注释掉添加的代码 然后再update 就报错了
    2020-05-15 11:17:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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