【问题标题】:AWS API Gateway DynamoDB GetItem without sort key?AWS API Gateway DynamoDB GetItem 没有排序键?
【发布时间】:2018-11-08 23:43:33
【问题描述】:

我有一个包含以下内容的 Dynamo Db 表

{
  "primary_key": {
    "S": "series"
  },
  "sort_key": {
    "S": "type-of-brokers"
  },
  "title": {
    "S": "Types Of Brokers"
}
,
{
  "primary_key": {
    "S": "series"
  },
  "sort_key": {
    "S": "type-of-brokers-2"
  },
  "title": {
    "S": "Types Of Brokers-2"
}

Following this我已经实现了application/json body mapping模板:

{
    "TableName": "table_name",
    "Key" :{
        "primary_key" :{
            "S": "series"
        },
        "sort_key" : {
            "S": "type-of-brokers"
        }
    }
}

它返回一个匹配主键和排序键的项目!

现在我想返回所有匹配的 primary_key 项目,即没有 sort_key

我如何做到这一点?使用 API 网关主体映射模板?

另外,api是否可以返回普通的json而不是“S”类型,here it specify attributes,可以通过integration response中的非硬编码来完成

【问题讨论】:

  • api可以返回普通的json而不是“S”类型吗?喜欢控制台中的文本视图,用于编辑未选中 DynamoDB JSON 复选框的项目?
  • 如果您使用的是 nodejs sdk,您可以使用 DocumentClient 从 dynamodb 响应中抽象出 AttributeValues。其他 sdk 可能有类似的客户端/抽象。 AFAIK api 本身将始终包含设计的属性值。
  • 我正在避免使用 AWS Lambda 这些值由 API Gateway 使用正文映射模板获取,也可以进行映射以响应。但我不想对每个响应都进行硬编码。

标签: amazon-web-services amazon-dynamodb aws-api-gateway


【解决方案1】:

getitem API 需要哈希和排序键。但是,您可以仅使用带有哈希的query api。

Query API

使用 KeyConditionExpression 参数提供特定值 为分区键。查询操作将返回所有 具有该分区键值的表或索引中的项目。你可以 可选地通过指定 a 来缩小 Query 操作的范围 KeyConditionExpression 中的排序键值和比较运算符。到 进一步细化查询结果,您可以选择提供 过滤器表达式。 FilterExpression 确定 结果应该返回给您。所有其他结果都是 丢弃。

【讨论】:

猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2021-12-24
相关资源
最近更新 更多