So I am trying to query data from hasura but one of the variable that I am passing is a variable due to which it always gives some error I tried many different solutions like this but no solution so far this is the query
query MyQuery {
Product(where: {product_category: {_eq: Liquor}}) {
product_decription
product_category
product_id
product_img
product_name
product_price
}
}
and this is the query part that I am trying
QueryOptions quer = QueryOptions(
document: gql(r'''query MyQuery($category:[ProductType_enum!]) {
Product(where: {product_category: {_eq: $category}}) {
product_category
product_decription
product_id
product_img
product_name
product_price
}
}
'''),
variables: <String, dynamic>{
'category': ['Liquor']
});
I am not able to understand what's wrong I am doing in this query this is the enum class
enum Product_type {
Toiletries,
Liquor,
Household_Requisites,
General_Items,
Food_Medecine,
Watches_Stationery
}
I am getting this error
OperationException (OperationException(linkException: null, graphqlErrors: [GraphQLError(message: variable "category" is declared as [ProductType_enum!], but used where ProductType_enum is expected, locations: null, path: null, extensions: {path: $.selectionSet.Product.args.where.product_category._eq, code: validation-failed})]))
for normal query it works fine .
The issue is that you're passing an array where a single value is expected. The important part of the error message is this:
variable "category" is declared as [ProductType_enum!], but used where ProductType_enum is expected
In this case
[ProductType_enum!]
represents an array but the_eq
part of your query is expecting a single value.Just update your variables to be 'category': 'Liquor' and it should work for you.
If you want to be able to pass an array you should use
_in
instead of_eq
and then write your query as