【问题标题】:Appsync missing resolverAppsync 缺少解析器
【发布时间】:2019-03-23 00:30:10
【问题描述】:

我正在使用 AWS appsync + DynamoDB。

问题:我在“用户”架构中创建了新字段“评级”:

type Users {
    id: ID!
    first: String!
    last: String!
    rating: String #<----The new field
}

AppSync 创建了所有资源,我可以使用 Mutations 创建新记录,这就像一个魅力。

mutation createUsers{
   createUsers(input:{
     first:"John"
     last:"Smith"
     rating:"B" #<---Writing new field without problem
   }){
     id
     first
     last
     rating #<---Confirming that is recorded in DynamoDB
   }
 }

问题是我不知道如何编写解析器以使以下查询工作。

query{
  queryUsersByRating(rating: "B"){
    items{
      id
      username
      rating
    }
  }
}

结果是这样的:

{
  "data": {
    "queryUsersByRating": null
  }
}

在“Missing Resolver”下明确指出了问题here,但没有明确的解决方案。

我尝试直接在 AppSync 界面中附加以下解析器,但不起作用:

{
    "version" : "2017-02-28",
    "operation" : "Query",
    "query" : {
        "expression": "rating = :rating",
        "expressionValues" : {
            ":rating" : $util.dynamodb.toDynamoDBJson($ctx.args.rating)
        }
    }
}

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • Users 表中的分区键是什么?附加该解析程序后,您在使用 AppSync 时遇到什么错误?

标签: aws-appsync


【解决方案1】:

您不必编写自己的解析器来按评级查询,Appsync 将所有字段都包装在 filter 中。

query{
  queryUsersByRating(filter: {rating: "B"}){
    items{
      id
      username
      rating
    }
  }
}

【讨论】:

  • 所以是的,基本上这是解决问题的答案,因为它指出我需要编写整个查询,包括过滤器部分。我试图使用位于 Query 文件夹中的自动生成的查询,但这似乎是不可能的。
  • 我有一个使用 Amplify 和 Appsync 的项目,我很遗憾选择了技术堆栈。它非常适合简单的任务,但是当您有复杂的需求时,您需要花费在编码和支持系统上的时间远高于传统开发。
猜你喜欢
  • 2021-07-18
  • 2019-09-29
  • 2019-02-04
  • 2018-11-06
  • 2019-04-16
  • 2019-02-03
  • 2018-12-22
  • 2016-07-08
  • 2020-10-25
相关资源
最近更新 更多