如何在 flutter 的 hasura 查询中传递枚举值

How to pass enum value in hasura query in flutter

所以我试图从 hasura 查询数据,但我传递的变量之一是一个变量,因此它总是给出一些错误我尝试了许多不同的解决方案 like this 但到目前为止没有解决方案这是查询

query MyQuery {
Product(where: {product_category: {_eq: Liquor}}) {
product_decription
product_category
product_id
product_img
product_name
product_price
}
}

这是我正在尝试的查询部分

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']
  });

我不明白我在这个查询中做错了什么 这是枚举 class

enum Product_type {
Toiletries,
Liquor,
Household_Requisites,
General_Items,
Food_Medecine,
Watches_Stationery
}

我遇到了这个错误

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

对于普通查询,它工作正常。

问题是您传递的数组应该是单个值。错误消息的重要部分是这样的:

variable "category" is declared as [ProductType_enum!], but used where ProductType_enum is expected

在这种情况下,[ProductType_enum!] 表示一个数组,但查询的 _eq 部分需要一个值。

只需将您的变量更新为 'category': 'Liquor' 它应该适合您。

如果您希望能够传递一个数组,您应该使用 _in 而不是 _eq,然后将您的查询写为

query MyQuery($categories:[ProductType_enum!]) {
 Product(where: {product_category: {_in: $categories}})