indexeddb:如何获取请求结果和游标值

时间:2014-03-20 16:48:05

标签: javascript indexeddb

有关indexeddb操作的两个问题。

  1. 从idb请求获取结果的可靠方法是什么?我看到两个来自
  2. var cursor = request.result; W3C

    var cursor = event.target.result; MDN

    他们会为所有请求提供相同的结果。

    2。  在value重新调整的游标上是否有index.openCursor属性。在一个例子中,我看到它在一个地方用于W3C规范。

    [report(cursor.value.isbn, cursor.value.title, cursor.value.author);][3]
    

    是否有一个地方,它说我可以使用它。

1 个答案:

答案 0 :(得分:2)

1)一般来说,所有请求都有结果。有不同类型的请求(例如IDBOpenDBRequest和游标请求)以及根据请求获取IDBDatabaseIDBObjectStore等对象的各种方法。 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回调产生IDBCursorWithValueevent.target.result(请求是目标)并且complete事件没有任何内容

2)一般情况下,只有IDBCursorWithValue个请求value。有各种请求不会产生值,甚至包括某些类型的无值游标请求。

更新IDBRequest IDBCursorWithValue位于request.result,其光标值通常(但不总是)位于{{1} (除了是无值游标,我怀疑你会使用它)。方法同步返回request.result.value(我首选的方法来获取引用)或通过request获得(有点混乱)。看看这个method called standardCursor in my library。它被event.targetentries.deleteentries.get重用,应该指向正确的方向。我的lib是识字的,并且根据其entries.update支持的例外情况实现。