如何在 GraphQL 中通过过滤器和顺序动态 create/Fetch 数据?

How to create/Fetch data dynamically by filters and order in GraphQL?

我在 graphql + apollo 客户端中创建一个查询,其过滤器和订单可以根据客户在前端的选择而改变。例如:

query (
        $orderPart: String!
        $wherePart: String!
        ) {
    getProductInfo(
        order {$orderPart}
        where {$wherePart}
    ) {
      productID
      description
      size
      model
      cathegoryNumber
    }

其中 $orderPart 将等于“description: DESC”或“productID: ASC”(取决于客户在某个时刻或其他时刻选择的内容)。 $wherePart 将等于“cathegoryNumber: {eq: 12}”或“productID: {eq: 111111}”。

我需要将 order/filter 子句完全作为参数传递。

但是没用。语法错误“语法错误:预期名称,已找到 $”。

所以我的问题是...

有没有办法实现这些动态filters/orders?如何实现此功能?还有其他方法可以实现这种动态过滤器和订单吗?

谢谢。

注意: 在官方文档中,我发现只能传值作为参数:

query (
        $orderValue: sortEnumType! = DESC
        $whereValue: String! = "description1"
        ) {
    getProductInfo(
        order {productID: $orderValue}
        where {description: {eq: $whereValue} }
    ) {
      productID
      description
      size
      model
      cathegoryNumber
    }

但这不是我需要的,因为总是 filters/orders 无法更改。并且每次 (prodyuct:ASC) 第一次,(cathegoryNumber:DESC) 第二次,它们都可能完全不同,等等...

感谢您的帮助,我找到了解决方案。创建模板时使用 apollo 客户端和变量:

let orderValue = 'order {productID: ASC}'; // built dynamically
let whereValue = 'description: {eq: "description1"}'; // built dynamically

document = gql`
query {
    getProductInfo(
        ${orderValue}
        ${whereValue}
    ) {
      productID
      description
      size
      model
      categoryNumber
    }
    `;