【问题标题】:GraphQL filtering an arrayGraphQL 过滤数组
【发布时间】:2021-05-11 23:51:08
【问题描述】:

我正在使用 GatsBy GraphiQL 编写查询以返回单个元素,但该查询返回所有元素。 这是我的测试数据:

    {
      "data": {
        "mKT": {
          "data": [
            {
              "name": "Apple",
              "description": "apple's desc"
            },
            {
              "name": "Orange",
              "description": "orange's desc"
            },
            {
              "name": "Banana",
              "description": "banana's desc"
            }
          ]
        }
      },
      "extensions": {}
    }

还有,这里是 GraphQL 查询:

    query MyQuery {
      mKT(data: {elemMatch: {name: {eq: "Apple"}}}) {
        data {
          name
          description
        }
      }
    }

我希望得到:

    {
     "name": "Apple",
     "description": "apple's desc"
    }

但是,运行查询会返回所有数据。 知道如何解决这个问题吗?

【问题讨论】:

    标签: graphql graphiql


    【解决方案1】:

    简单使用:

    query MyQuery {
      mKT(data: {filter: {name: {eq: "Apple"}}}) {
        data {
          name
          description
        }
      }
    }
    

    filter 关键字应该可以解决问题。

    查看GraphQL Reference (in Gatsby docs)了解更多详情。

    【讨论】:

    • 无法识别此数据结构中的过滤关键字。收到此错误:“无法在类型 \"Query\" 上查询字段 \"mKT\"。”
    • 你能提供你localhost:8000/___graphql的截图吗?
    【解决方案2】:

    我相信这与以下情况相同:

    GraphQL query to access first item in an array?

    如果结构没有在源上定义,则不能对结构使用过滤器、限制等。

    如果您有权访问源,请将limit 之类的内容添加到字段数据中。

    如果没有,你会得到完整的数组,你必须自己处理它。

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2020-04-04
      • 2021-02-09
      • 2018-04-14
      • 2021-08-31
      • 2018-04-12
      • 2022-01-01
      • 2018-10-19
      • 2019-06-02
      相关资源
      最近更新 更多