Appsync 缺少解析器

Appsync missing resolver

我正在使用 AWS appsync + DynamoDB。

问题:我在 'Users' 模式中创建了新字段 'rating':

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)
        }
    }
}

如有任何帮助,我们将不胜感激!

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

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