如何使用Cassandra手动分页导航到上一页
How to navigate to previous page using Cassandra manual paging
我正在使用Nodejs Cassandra驱动程序,我希望能够检索上一页和下一页。到目前为止,文档显示了下一页的检索,即保存上一页的pageState
并将其作为参数传递。遗憾的是,没有关于如何导航到上一页的信息。
在我看来,有两种选择:
-
将每个
pageState
和页面保存为键值对,并将pageState
用于要导航到的页面。 -
将检索到的数据保存在数组中,然后使用该数组导航到上一页。(我认为这不是一个好的解决方案,因为我必须将大块的数据存储在内存中。)
这两种方法对我来说似乎都不是一个优雅的解决方案,但如果必须选择,我会使用第一种。
有什么方法可以使用Nodejs Cassandra驱动程序开箱即用吗?
另一件事是,在文档中,手动分页是通过调用eachRow
函数来使用的。如果我理解正确的话,一旦数据库中的每一行都是红色的,它就会给你每一行。问题是这是在我的API中实现的,并且我在HTTP响应中返回当前页面的数据。因此,为了做到这一点,我必须将每一行推送到一个自定义数组中,然后在检索到当前页面的数据时返回该数组。有没有一种方法可以将execute
与手动分页一起使用,因为上面的内容似乎是多余的?
感谢
编辑:
这是我的数据模型:
CREATE TABLE store_customer_report (
store_id uuid,
segment_id uuid,
report_time timestamp,
sharder int,
customer_email text,
count int static,
first_name text,
last_name text,
PRIMARY KEY ((store_id, segment_id, report_time, sharder), customer_email)
) WITH CLUSTERING ORDER BY (customer_email ASC)
我将数据显示在一个网格中,这样用户就可以在其中导航。在我写这篇文章的时候,我想了一种不需要以前功能的方法来做到这一点,但尽管如此,我认为这是一个有效的案例,如果有一个优雅的解决方案,那就太好了。
遗憾的是,没有关于如何导航到上一页的信息。
这是正确的,当您进行查询并且有更多的行时,Cassandra会返回一个分页状态来获取下一组行,而不是前一组行。虽然分页状态表示的内容被抽象掉了,但它通常是一个指针,指向在哪里继续读取下一组数据,实际上没有读取前一组数据的概念(因为你只是读取它)。
将每个pageState和页面保存为键值对,并使用要导航到的页面的pageState。
这也是我推荐的策略,当然,要获得实际必须进行查询的分页状态。
有什么方法可以使用Nodejs Cassandra驱动程序开箱即用吗?
不幸的是,据我所知,如果你想回到以前的页面,你需要跟踪状态。
有没有一种方法可以将execute和手动分页一起使用,因为上面的内容似乎是多余的?
是的,您也可以在选项参数中提供带有execute的pageState
,它将被视为:
client.execute('SELECT * FROM table', [], {pageState: pageState}, function (err, result) {
...
});
有一个"更多"手动选项,这在分页功能之前很常见。您可以存储作为响应发送回的当前页面的最后一个分区/集群密钥(可能根据其内容进行加密,最有可能生成分区密钥,并且只发送/接收集群密钥以避免安全问题)。然后,当你做"下一页"响应时,你只需要从那里开始你的CQL查询。要返回一页,请更改集群键的ORDER BY
子句并向后走。如果你提供了你的模式,那么举例会更容易。不管怎样,这就是pageState真正做到的。
- Bootstrap一页导航Fluid网站最小化问题
- 下一页导航
- 一页滚动自定义导航
- 如何在当前选项卡关闭或导航到另一页时更新表中列的值
- 防止退格键在 SELECT 聚焦并打开时导航到上一页
- 如何在导航中获取下一页的 href
- 添加上一页下一个导航到列表项淡入/淡出循环
- 拖动按钮可导航到下一页,了解如何编写代码
- 如何使用Cassandra手动分页导航到上一页
- 如何从上一页导航回主页按钮
- 当设置为导航栏固定顶部时,一页引导导航栏切换在移动模式下无法正常工作
- 通过导航栏中的单个播放按钮,在电子书中的每一页加载音频文件
- 如何在不刷新HTML的情况下导航到上一页
- 捕捉滑动效果导航到下一页在HTML5 Ipad应用程序
- 一页导航挡住了我的内容
- PHP导航到前一页后登录的解决方案
- 一页网站-导航突出当前部分
- jQuery一页导航插件溢出隐藏问题
- 导航回上一页时Ajax调用不起作用
- 获取浏览器提示"确认导航"选择“离开此页面”;或者“留在这一页”;在Woocommerce结账