HTML5如何判断IndexedDB游标是否到达末尾

5
我正在遍历一个indexedDB数据存储,将数据添加到JavaScript数组中。如何判断光标是否在末尾,以便我可以对数组进行排序并采取行动?
当光标检索到一行时,会调用onsuccess - 是否有另一个回调来导航整个光标?
1个回答

8

成功的游标请求 (event.target.result) 的结果要么是游标对象,要么是 null。

如果 event.target.result 被设置了,它就是游标,您可以访问 event.target.result.value。然后,如果有下一个对象,您可以调用 event.target.result.continue() 继续进行下一个对象的操作。

如果 event.target.result 没有被设置,则没有更多的对象。

为了说明,这是我一个项目中的一些代码:

  var collectObjects = function (request, cb) {
    var objects = []
    request.onsuccess = function (event) {
      if (!event.target.result) return cb(null, objects)
      cursor = event.target.result
      objects.push(cursor.value)
      cursor.continue()
    }
    request.onerror = function (event) {
      cb(event.target.error)
    }

不确定你的示例中变量cursor是什么(我猜想它是==而不是=?) - ed4becky
1
不,我是先给它赋值,然后再检查它是否存在。为了提高可读性,我会稍微修改一下这个例子。 - Myrne Stol
你指引了我正确的方向 - 这个代码有效:if (cursor === false || cursor === undefined) { - ed4becky
ed4becky,也许可以将那段代码作为额外的答案发布。这样阅读起来几乎是不可能的。对其他人可能会有用。 - Myrne Stol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接