G Cid
G Cid

Reputation: 80

Appsync missing resolver

I'm using AWS appsync + DynamoDB.

The problem: I created the new field 'rating' in my 'Users' schema:

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

AppSync created all the resources and I can create new records with Mutations and that works like a charm.

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

The problem is that I can't figure out how to write the resolver to make the following query work.

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

The result is this:

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

The problem is clearly identified here under "Missing Resolver", but there's no clear solution.

I tried attaching the following Resolver directly in AppSync interface but is not working:

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

Any help would be appreciated, THANKS!

Upvotes: 1

Views: 988

Answers (1)

CY Lim
CY Lim

Reputation: 126

You don't have to write your own resolver for querying by rating, Appsync wrapped all the fields inside filter.

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

Upvotes: 1

Related Questions