3

这工作正常

  query QryTopics {
    topics {
      nodes {
          name
          topicId
          count
      }
    }
  }

但我想要一个过滤的结果。我是 graphql 的新手,但我在这个集合中看到了一个名为“where”的参数,在“first”、“last”、“after”等之后......我该如何使用它?它的类型是“RootTopicsTermArgs”,这很可能是从我的模式自动生成的。它有字段,其中一个是布尔的“无子”。我正在尝试做的是仅返回带有标签的帖子的主题(Wordpress 中的自定义分类法)。基本上它阻止我在客户端这样做。

data.data.topics.nodes.filter(n => n.count !== null)

任何人都可以指导我使用 where args 和集合的一个很好的例子吗?我已经尝试了我能想到的所有语法排列。包括

  topics(where:childless:true)
  topics(where: childless: 'true')
  topics(where: new RootTopicsTermArgs()) 
  etc... 

显然这些都是错误的。

4

1 回答 1

7

如果自定义分类法(例如主题)已注册到“show_in_graphql”并且是您的架构的一部分,您可以使用如下参数进行查询:

query Topics {
  topics(where: {childless: true}) {
    edges {
      node {
        id
        name
      }
    }
  }
}

此外,您可以使用结合变量的静态查询,如下所示:

query Topics($where:RootTopicsTermArgs!) {
  topics(where:$where) {
    edges {
      node {
        id
        name
      }
    }
  }
}

$variables = {
  "where": {
    "childless": true
  }
};

我推荐的一件事是使用 GraphiQL IDE,例如https://github.com/skevy/graphiql-app,它将通过在您键入时提供提示和无效查询的可视指示符来帮助验证您的查询。

您可以在此处查看使用参数查询术语的示例:https ://playground.wpgraphql.com/#/connections-and-arguments

于 2018-03-01T17:12:40.727 回答