javascript - DynamoDB 中的正向和反向分页

标签 javascript node.js amazon-dynamodb dynamodb-queries

我正在使用 DynamoDB 和 NodeJS 在 UI 上登记一些对象。列表很长,因为 DynamoDB 一次最多可以扫描/查询 1MB 的数据,所以我决定使用分页,所以在前端我有 PreviousNext从当前页面来回分页的按钮。

我的问题是我想从 Table X 一次检索 20 个项目通过使用 DynamoDB Query基于所选 DynamoDB Index 的功能.
假设我刚刚获取了最初的 20 个结果(0-20),所以单击下一步按钮我想获取结果:21-40 等等。另外,我想启用向后分页,所以当我在显示结果的页面上时:41-60,Back按钮将再次获取结果:21-40。
据我了解,DynamoDB 不支持数值偏移。

如何实现向后和向前分页?我是 DynamoDB 的新手,请帮帮我。

最佳答案

虽然 DynamoDB 只会对您的数据进行正向分页,但您必须在 中处理反向分页。前端 .

大型Tables ( 超过 1MB 大小 ),什么 DynamoDB做:

  • 扫描或查询高达 1MB。
  • 返回 LastEvaluatedKey获取下一组数据或 下一页 .此值用作 分页键 前端 来回分页。

  • LastEvaluatedKey holds the value of the last object fetched from DynamoDB during a Scan or Query.



    您需要做什么(在 后端 中):
  • 使用LIMIT DynamoDB Query 的属性(property)指定您只需要 20 个项目。
  • 使用ExclusiveStartKey DynamoDB Query 的属性(property)指定下一组数据将从该属性的指定值开始。

  • 您需要做什么(在 前端 中):
  • 保留对象数组arr[]托管分页键。
  • 保留变量page初始化为-1,其值将指示当前页面用户在。
  • 将列表的初始页面加载到 UI 中。现在在数据旁边,如果你有 LastEvaluatedKey ,插入arr并增加 page .

  • Now, you have a single page and page indicates you're on Page 0 and arr contains Page Key of next page.


  • Next的代码按钮应遵循以下逻辑:

    使用 ExclusiveStartKey = arr 请求您的服务器获取下一页[ page ]
  • 当下一页的结果到达时,您将再次获得另一个 LastEvaluatedKey ,所以再次将其插入 arr并增加 page .所以你在这里得到图片,我们如何保存页面键 .
  • Back的代码按钮应遵循以下逻辑:

    由于page变量表示当前页面所以page - 1将指示上一页。所以: if ( page-1 >=0) 请求您的服务器使用 ExclusiveStartKey = arr 获取下一页[ page - 1 ]

  • 您必须在 Back 时进行管理& Next使用 arr[] 可以单击按钮和 page获取每个页面后的变量。

    关于javascript - DynamoDB 中的正向和反向分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61414775/

    相关文章:

    javascript - 如何删除对象数组中的两个重复值

    ios - 无法保存到 DynamoDB 表 (iOS)

    node.js - 进行 api 调用时出现 Docusign 旧 header 错误

    java - DynamoDB 的 withLimit 子句与 DynamoDBMapper.query

    amazon-web-services - 将 S3 中存储的 .csv 文件迁移到 DynamoDB 的方法?

    javascript - 在angularJS中根据自定义属性优先级将类添加到列表元素?

    javascript - Google Chrome : HTTP GET on localhost, 加载时间不一致

    javascript - 具有复杂计算的异步回调Javascript

    node.js - 另一个 meteor 调用中的 meteor 调用

    java - Tomcat 作为代理服务器