【问题标题】:Dynamodb - scan map attribute with GraphQLDynamodb - 使用 GraphQL 扫描地图属性
【发布时间】:2020-02-01 03:42:32
【问题描述】:

我正在使用 GraphQL 扫描 dynamodb 中的一个集合,如下所示:

{
  "config_name": "COLOR_PALETTE",
  "config_value": {
    "SHOW_CUSTOM_SUBSCRIPTION": "NO",
    "SHOW_DD_SUBSCRIPTION": "NO",
    "SHOW_GRADIENT_SUBSCRIPTION": "YES",
    "SHOW_SOLID_SUBSCRIPTION": "NO"
  }
}

我想将“config_value”作为键值对返回。如何定义 AppSync 架构和解析器以获取“config_value”作为键值对?

【问题讨论】:

    标签: amazon-web-services graphql aws-appsync


    【解决方案1】:

    如果您将架构设置如下:

    type ConfigValues {
        SHOW_CUSTOM_SUBSCRIPTION: String!
        SHOW_DD_SUBSCRIPTION: String!
        SHOW_GRADIENT_SUBSCRIPTION: String!
        SHOW_SOLID_SUBSCRIPTION: String!
    }
    
    type Query {
        getConfigValues(configName: String!): ConfigValues
    }
    
    schema {
        query: Query
    }
    

    getConfigValues 上使用解析器,请求映射模板为:

    {
        "version": "2017-02-28",
        "operation": "GetItem",
        "key": {
            "config_name": $util.dynamodb.toDynamoDBJson($ctx.args.configName),
        }
    }
    

    还有一个响应映射模板:

    $util.toJson($ctx.result.config_value)
    

    执行以下查询:

    query {
      getConfigValues(configName: "COLOR_PALETTE") {
        SHOW_CUSTOM_SUBSCRIPTION
        SHOW_DD_SUBSCRIPTION
        SHOW_GRADIENT_SUBSCRIPTION
        SHOW_SOLID_SUBSCRIPTION
      }
    }
    

    会有以下反应:

    {
      "data": {
        "getConfigValues": {
          "SHOW_CUSTOM_SUBSCRIPTION": "NO",
          "SHOW_DD_SUBSCRIPTION": "NO",
          "SHOW_GRADIENT_SUBSCRIPTION": "YES",
          "SHOW_SOLID_SUBSCRIPTION": "NO"
        }
      }
    }
    

    此答案假定您的 DynamoDB 表的主分区键设置为 config_name

    【讨论】:

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