【问题标题】:Dynamo db paginationDynamo 数据库分页
【发布时间】:2019-05-10 09:44:11
【问题描述】:

我想在 dynamodb 中使用 aws-sdk DocumentClient() 进行分页 我正在使用 node.js。

我想要做的是获取前 10 个项目,然后将这些值返回给用户。在该用户发出一个新请求后,他告诉服务器从 10 开始,服务器从 10 到 20 获取其他 10 并返回响应。我试过LastEvaluatedKey 但我的情况不同。有什么方法可以告诉 dynamodb 从特定项目开始,例如 1,然后设置 Limit: 10

【问题讨论】:

  • Dynamodb 分页不是跳过和限制类型。您必须将 lastevalekey 提供给客户并要求客户转发以获取下一页
  • 谢谢。有没有办法使用查询来获取所有项目以从集合中获取所有记录。我不想使用扫描。
  • 不...DynamoDB 在单个查询响应中最多返回 1MB 数据。

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


【解决方案1】:

我找到了解决此问题的方法。您需要从 dynamodb 响应中获取LastEvaluatedKey 并将其发送回前端,然后您的前端应在参数中发送LastEvaluatedKey,您可以将其用作ExclusiveStartKey

getItems(pageSize, lastItem?) {
    try {
      const params = {
        TableName: 'User',
        Limit: pageSize,
      };
      if (lastItem) {
        params.ExclusiveStartKey = { item_id: lastItem};
      }
      const response = await dynamoDb.scan(params).promise();
      return {
         items: response.Items,
         lastItem: response.LastEvaluatedKey
      }

    } catch (error) {
      throw error;
    }

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多