如何在 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}})
所以我试图从 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}})