有关indexeddb操作的两个问题。
答案 0 :(得分:2)
1)一般来说,所有请求都有结果。有不同类型的请求(例如IDBOpenDBRequest
和游标请求)以及根据请求获取IDBDatabase
和IDBObjectStore
等对象的各种方法。 event.target.result
只是一个例子。
例如:
* IDBIndex
IDBObjectStore
的{{1}}会objectStore
*使用IDBObjectStore
,您会在IDBTransaction
发现对transaction
的引用
*在IDBTransaction
上,db
属性为IDBDatabase
* IDBOpenDBRequest
IDBDatabase
属性<{1}}上有result
除event.target
之外,您还会找到包含此类对象和引用的event.source
。
各种类型的IDB对象可以显示为target
,因此event.target.result
会根据使用的方法而改变。它甚至取决于所使用的回调:来自游标请求的success
回调产生IDBCursorWithValue
为event.target.result
(请求是目标)并且complete
事件没有任何内容
2)一般情况下,只有IDBCursorWithValue
个请求value
。有各种请求不会产生值,甚至包括某些类型的无值游标请求。
更新:IDBRequest
IDBCursorWithValue
位于request.result
,其光标值通常(但不总是)位于{{1} (除了是无值游标,我怀疑你会使用它)。方法同步返回request.result.value
(我首选的方法来获取引用)或通过request
获得(有点混乱)。看看这个method called standardCursor
in my library。它被event.target
,entries.delete
和entries.get
重用,应该指向正确的方向。我的lib是识字的,并且根据其entries.update
支持的例外情况实现。