使用切片或限制& amp; RethinkDB分页跳过更改()

时间:2016-01-11 19:44:50

标签: pagination rethinkdb

如何使用changes()在RethinkDB中进行分页?

这些选项都不起作用:

r.db('bustest').table('client').orderBy({index: r.desc("id")}).slice(3, 3).changes()

r.db('bustest').table('client').orderBy({index: r.desc("id")}).skip(3).limit(3).changes()

只有它有效:

r.db('bustest').table('client').orderBy({index: r.desc("id")}).limit(3).changes()

更新:

例如,在更改后跳过():

r.db('bustest').table('client').orderBy({index: r.desc("id")}).limit(3).changes({squash: 0.05, includeInitial: true, includeStates: true})

返回:

{
"state":  "ready"
},
{
"new_val": {
"first_name":  "Gruzin" ,
"id":  "e9580339-b908-4349-a208-c3d1e25bf7ba" ,
"last_name":  "Bagal"
}
},
{
"new_val": {
"first_name":  "e31db5422cd74040" ,
"id":  "efadedd0-56f2-498f-ad04-5191e2be1244" ,
"last_name":  "27d6b3a140235275"
}
},
{
"new_val": {
"first_name":  "2ba4a9d0e3616865" ,
"id":  "f5c7f3b7-23d2-4661-a5b7-91b977635556" ,
"last_name":  "b7f4df90a27bb05b"
}
},
{
"state":  "initializing"
}

并跳过:

r.db('bustest').table('client').orderBy({index: r.desc("id")}).limit(3).changes({squash: 0.05, includeInitial: true, includeStates: true}).skip(3)

返回:

{
"state":  "ready"
},
{
"new_val": {
"first_name":  "Gruzin" ,
"id":  "e9580339-b908-4349-a208-c3d1e25bf7ba" ,
"last_name":  "Bagal"
}
}

更改后跳过()不起作用。但是对changes()的分页对我的项目非常重要。

1 个答案:

答案 0 :(得分:1)

https://rethinkdb.com/docs/changefeeds/ruby/#filtering-and-aggregation

中记录的内容

您无法在slice skip中使用它们。仅orderBy,然后按limitorderBy之前只有changes也有效

要对changes本身进行分页,(通过更改Feed返回平均数据),在changes()之后,您可以调用skip,并自己迭代返回光标。但是,如果您在limit之后使用slicechanges,则更改Feed仅返回该更改量,并关闭更改源。