如何在 drupal 中使用 graphql 查询过滤 entityBundle

How to filter on entityBundle using graphql query in drupal

我正在为 Drupal 8 使用 GraphQl api。不幸的是,我对这两种技术都不是特别了解。

我有以下查询

query {
  nodeQuery (offset: 0, limit: 23) {
    entities {
      entityLabel
      entityBundle
      entityId
    }
    count
  }
}

哪些 returns 看起来像这样的东西

{
  "data": {
    "nodeQuery": {
      "entities": [
        {
          "entityLabel": "Frontpage",
          "entityBundle": "section_page",
          "entityId": "20"
        },
      ....

一些返回的实体不是 section_page 实体,所以我想做一个过滤器,让我过滤掉它们。

我做了以下事情

query {
  nodeQuery (offset: 0, limit: 23,filter: {conditions: {field: "entityBundle", value: "section_page", operator: EQUAL}}) {
    entities {
      entityLabel
      entityBundle
      entityId
    }
    count
  }
}

这是行不通的,我真的不希望它有那么多,因为显然 entityBundle 不是节点的子节点,所以我应该以某种方式过滤实体内部的 entityBundle。还没想好怎么做。

当我 运行 查询是

时得到的错误
{
  "errors": [
    {
      "message": "Internal server error",
      "category": "internal",
      "locations": [
        {
          "line": 32,
          "column": 5
        }
      ],
      "path": [
        "nodeQuery",
        "entities"
      ]
    },
    {
      "message": "Internal server error",
      "category": "internal",
      "locations": [
        {
          "line": 37,
          "column": 5
        }
      ],
      "path": [
        "nodeQuery",
        "count"
      ]
    }
  ],
  "data": {
    "nodeQuery": {
      "entities": null,
      "count": null
    }
  }
}

好吧,想通了,令人惊讶

query {
  nodeQuery (offset: 0, limit: 23, filter: {conditions: [
    {operator: EQUAL, field: "type", value: ["section_page"]}]}) {
    entities {
      entityLabel
      entityBundle
      entityId
    }
    count
  }
}

因为字段的类型似乎也与 entityBundle 值相同。