【问题标题】:Conditional pagination using DynamoDB scan使用 DynamoDB 扫描的条件分页
【发布时间】:2016-10-29 02:29:36
【问题描述】:

我有一个拥有cityName字段的人的列表:

Person {
  id: ...
  name: ...
  cityName: ...
}

我想使用 DynamoDB 运算符 LimitExclusiveStartKey 对列表进行分页。这工作得很好,但是当我想对来自 fx, 'London' 的用户进行分页时遇到了麻烦

cityName: 'London'

我已尝试添加以下内容:

FilterExpression: 'cityName = :x',
ExpressionAttributeValues: {
  ':x': 'London'
}

但这只是在扫描完成之后删除不匹配的人。我想扫描发生之前过滤。

我有什么办法可以做到这一点吗?

【问题讨论】:

  • 按照设计,过滤器在扫描后应用,目前无法通过 API 控制。您可以考虑使用 GSI。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

我发现query 方法适合这种方法。所有scan 过滤都是在从数据库中提取之后完成的,因此永远不会起作用。

我希望这可以帮助其他人:

const cityName = 'London'

const params = {
  TableName: 'Person',
  Limit: 5,
  IndexName: 'cityName-index',
  KeyConditionExpression: 'cityName = :x',
  ExpressionAttributeValues: {
    ':x': cityName
  }
}

// For pagination add the "ExclusiveStartKey" key to params

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多