Appsync缺少解析器

时间:2018-10-18 08:26:49

标签: aws-appsync

我正在使用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
  }
}

在“缺少解析程序”下here可以清楚地识别出该问题,但是没有明确的解决方案。

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您不必编写自己的解析器即可按等级查询,Appsync将所有字段都封装在filter内。

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