How to debug Flutter Amplify Graphql requests?

Viewed 91

I'm trying to return a list of my model sorted by date. But I run into a vague error.

Here is my graphql.schema

type Vote @model(timestamps: { createdAt: "created_at", updatedAt: "updated_at" }) {
    id: ID!
    name: String!
    date: AWSTimestamp @index(name: "date-index", sortKeyFields: ["name"], queryField: "getVotesByDate")
}

Here is the request:

Future<List<Vote?>> recentVotes() async {
  const getRecentVotes = "getRecentVotes";
  String document = """
    query getRecentVotes {
      listVotes(limit: 5) {
        items {
          date
          id
          name
        }
        nextToken
      }
    }
  """;

  try {
    final request = GraphQLRequest(
      document: document,
      modelType: Vote.classType,
      decodePath: getRecentVotes,
    );

    final response = await Amplify.API.query(request: request).response;

    List<Vote?>? votes = response.data?.items;

    if (votes == null) {
      return [];
    }

    _voteLength = votes.length;

    return votes;
  } catch (err) {
    debugPrint(err.toString());
  }

  return [];
}

The error I get back is pretty terrible:

flutter: ApiException(message: The HTTP response status code is [400]., recoverySuggestion: The metadata associated with the response is contained in the HTTPURLResponse.
flutter: For more information on HTTP status codes, take a look at
flutter: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes, underlyingException: null)

As best I can tell, it's just a standard bad request error but with no message of what makes it bad. The graphql syntax is valid and tested.

*Edit

I've managed to restart the app which provided more details about the error. With the same code, I now get

flutter: type 'Null' is not a subtype of type 'String'

My first thought after this is that there's some returned field that is null that cannot be. I've checked the name and the id of all the records in the database and they are not null so I'm not sure how that's possible.

0 Answers
Related