代码之家  ›  专栏  ›  技术社区  ›  JohnSk

appsync dynamodb不会返回主分区密钥

  •  0
  • JohnSk  · 技术社区  · 6 年前

    在DynamoDB我有一个 categorys 表中的项

    {
      slug: String!,
      nm: String,
      nmTrail: String,
      ...
    }
    

    id 现场。 slug

    解析程序。。。

    {
      "version": "2017-02-28",
      "operation" : "GetItem",
      "key" : {
        "slug" : { "S" : "${context.arguments.slug}" }
      }
    }
    

    查询,例如

    query GoGetOne {
      getCategory(slug: "Wine") {
        nm
      }
    }
    

    工作正常-返回 nm 中正确项的值 -类似地,我可以在中添加任何其他属性 分类 归还它们(如nmTrail),除非 鼻涕虫 .

    鼻涕虫 (主分区键,一个不可为空的字符串)然后我得到一个 DynamoDB:AmazonDynamoDBException 属于 the provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException .

    id: ID!

    根据KDs请求更新1

    我的更新模式是:

    type Mutation {
      putCategory(
        slug: String!,
        nm: String,
        nmTrail: String,
        mainCategorySlug: String,
        mainCategoryNm: String,
        parentCategorySlug: String,
        parentCategoryNm: String
      ): Category
    }
    

    没有与之相关的解析器,因此(很明显)没有使用突变 put 有什么事吗-只是想 get 批量上传数据开始。

    /更新1

    我错过了什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tinou    6 年前

    我尽量复制你的API,它对我很有用。

    enter image description here

    架构:

    type Query {
        getCategory(slug: String!): Category
    }
    type Category {
        slug: String
        nm: String
        nmTrail: String
    }
    

    Query.getCategory 请求模板:

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

    分解器打开 查询.getCategory 响应模板:

    $util.toJson($ctx.result)
    

    查询:

    query GoGetOne {
      getCategory(slug: "Wine") {
        slug
        nm
      }
    }
    

    结果

    {
      "data": {
        "getCategory": {
          "slug": "Wine",
          "nm": "Wine1-nm"
        }
      }
    }