什么时候rethinkdb会返回一个游标

时间:2014-08-19 03:00:06

标签: rethinkdb

我注意到r.table('xxx')并不总是返回cursor,但有时也会直接返回docs

  1. cursor客户端实施或server执行与cursor相关联的查询时有哪些特殊事项?

  2. 如果它与server有关,那么它是什么以及何时会收到cursor

  3.   

    例如,我在查询中使用skiplimit指定结果偏移量和大小。服务器会返回cursor还是只返回结果docs

1 个答案:

答案 0 :(得分:4)

当查询返回流时,驱动程序返回游标。

基本上,当服务器生成一个流(一个懒惰计算的序列)时,驱动程序将返回一个游标。当您从游标中获取行时,服务器将计算序列中的更多元素。

例如,当您运行r.table('xxx')时,您将返回光标。当您使用驱动程序请求文件时,服务器将从磁盘加载文档。

在JavaScript驱动程序中,当查询返回一个数组时,驱动程序将潜行一个模仿arrray本身和Array.prototype之间的游标接口的对象。 因此,如果query.run(...)返回序列,则可以执行

query.run(connection).then(function(result) {
    return result.toArray()
}).then(function(result) {
    // do something with result
}).error(function(err) {
    // handle err
})

基本上如果你不想想要回到光标或数组,你可以认为它是一个光标。

您可以在此处阅读有关流/光标的更多信息:
http://www.rethinkdb.com/docs/data-types/

相关问题