GraphQL 过滤数组

问题描述

我正在使用 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"
    }

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

解决方法

简单使用:

connectionString

query MyQuery { mKT(data: {filter: {name: {eq: "Apple"}}}) { data { name description } } } 关键字应该可以解决问题。

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

,

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

GraphQL query to access first item in an array?

如果结构未在源中定义,则不能对其使用过滤器、限制等。

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

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