Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Validation error of type SubSelectionRequired: Sub selection required for type null of field

Tags:

I am working on a graphql issue where I am getting following error for the request

{   customer(id: "5ed6092b-6924-4d31-92d0-b77d4d777b47") {     id     firstName     lastName     carsInterested   } }   "message": "Validation error of type SubSelectionRequired: Sub selection required for type null of field carsInterested @ 'customer/carsInterested'", 

Below is my schema

type Customer {   id: ID!   firstName: String!   lastName: String!   # list of cars that the customer is interested in   carsInterested: [Car!]  }  type Query {   # return 'Customer'   customer(id: ID!): Customer } 

I do have a CustomerResolver with function carsInterested in it.It looks as follows

@Component public class CustomerResolver implements GraphQLResolver<Customer> {      private final CarRepository carRepo;      public CustomerResolver(CarRepository carRepo) {this.carRepo = carRepo;}      public List<Car> carsInterested(Customer customer) {         return carRepo.getCarsInterested(customer.getId());     } } 

When I query for customer without 'carsInterested', it works properly. Any idea why I am getting this error?

Thanks

like image 752
BrownTownCoder Avatar asked Jan 01 '20 19:01

BrownTownCoder


1 Answers

When requesting a field that resolves to an object type (or a list of an object type), you have to specify the fields on that object type as well. The list of fields for a particular field (or the root) is called a selection set or a sub selection and is wrapped by a pair of curly brackets.

You're requesting the carsInterested, which returns a list of Cars, so you need to specify which Car fields you want returned as well:

{   customer(id: "5ed6092b-6924-4d31-92d0-b77d4d777b47") {     id     firstName     lastName     carsInterested {       # one or more Car fields here     }   } } 
like image 195
Daniel Rearden Avatar answered Nov 24 '22 11:11

Daniel Rearden