0
以下工作代码用于设置我的问题:更新在IndexedDB的单场
myRequest = indexedDB.deleteDatabase('myDatabase')
myRequest.onsuccess \t = function() {
\t var myRequest
\t
\t myRequest = indexedDB.open('myDatabase')
\t myRequest.onupgradeneeded = function(response) {
\t \t var myDatabase
\t \t \t ,myObjectStore
\t \t
\t \t myDatabase = response.target.result
\t \t myObjectStore = myDatabase.createObjectStore('myData',{autoIncrement:true})
\t }
\t myRequest.onerror = function(response) {
\t \t debugger
\t }
\t myRequest.onsuccess = function(response) {
\t \t var myTransaction
\t \t \t ,myObjectStore
\t \t \t ,myRequest
\t \t \t ,obj = {}
\t \t window.myDatabase = response.target.result
\t \t myTransaction = myDatabase.transaction(['myData'],'readwrite')
\t \t myObjectStore = myTransaction.objectStore('myData')
\t \t obj.field1 = 'a'
\t \t obj.field2 = 'b'
\t \t myObjectStore.add(obj)
\t }
}
问:我怎么说相当于:
update myData set field2='c' where key=1
我是否必须在.put语句中提供field1和field2?
谢谢约书亚。你的回答真的帮了我。我注意到的一件事是,在put语句中不需要主键,因为它在get结果中提供。 –
如果你把()没有一个键,而商店有autoIncrement设置,你会得到一个新的记录,不会覆盖以前的记录....除非你使用内嵌键(即对象存储有keyPath指定,你的例子中没有。) –