graphql,如何按第一个节点名称进行过滤?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了graphql,如何按第一个节点名称进行过滤?相关的知识,希望对你有一定的参考价值。

如果我有graphQL节点,如

allFile 
  edges 
  ...
  

name1 ...
name2 ...

我如何通过q​​azxswpoi和name1过滤?

如果我可以将name2作为变量传递,我怎么能这样做,因为它们是第一个节点?

换句话说,通常的方式是

name1

但如果我想要这样的话怎么做呢

allFile (filter: extension: eq: "jpg" )
 edges 
  nodes 
   name
  
 

或直接类似的东西

(filter: eq: "name1")
 edges 
  nodes 
   name
  
 

但似乎不可能(?)


编辑

我会试着更好地解释自己。如果我有这棵树:

query ($name: String) 
  $name 
    edges 
      node 
        name
        message
      
    
  

我可以通过特定的扩展(照常营业)过滤该节点的所有节点。

问题是“AllMyPluginNodes”的名称正在改变,例如

AllMyPluginNodes 
  edges 
    node 
     name

我知道所有这些名字,所以我想专门查询这些名字。

在第一种情况下,我会做一些像MyName1Nodes edges ... MyName2Nodes edges ... MyName3Nodes edges ... 来检索AllMyPluginNodes(filter: extension: eq: "yml" )节点下的所有yml文件,但是现在,我该怎么做?

AllMyPluginNodes

这显然有效,但我希望MyName1Nodes (filter: extension: eq: "yml" )是一个变量,这不是问题,因为我可以通过MyName1Nodes上下文传递变量。问题是,一旦我有了这个变量,如果这是一个“根”或“主要”节点,如何使用它来查询createPages?可能吗?

我可以做点什么

MyName1Nodes

但我做不到这样的事情

query($ext: String) 
MyName1Nodes (filter:  extension:  eq: $ext  )`

我可以吗?

答案

query($ext: String, $name: String) $name (filter: extension: eq: $ext )`

自动创建的页面可以接收上下文,并将其用作GraphQL查询中的变量。

You can pass variables that can be queried via context中创建页面时,请尝试将gatsby-node.js字段添加到页面的上下文中。

name

一旦它在上下文中,您可以在graphql查询中查询createPage( path: `/$ edge.node.uid `, component: postTemplate, context: uid: edge.node.uid, name: name )

name

此外,您可以通过query PostByName($name: String!) allMyPosts(filter: name: eq: $name ) edges node id data ... prop访问模板中的name

pageContext
另一答案

没有办法在另一个查询中使用页面查询的结果。在评估页面之前,Gatsby通过静态分析提取您的GraphQL查询,因此变量不可用。这对于允许您的网站编译为静态的服务器端呈现页面非常重要,这些页面不依赖于运行的GraphQL服务器(它仅在构建期间运行)。

如果你想根据GraphQL查询的结果生成页面或其他效果,你可以像@ksav那样做:在import React from "react" const Page = ( pageContext ) => return <div>pageContext.name</div> export default Page 中运行一个查询(或几个),然后为每个查询调用createPages,传递在生成的createPage中作为上下文,允许它在页面查询中用作变量。

以上是关于graphql,如何按第一个节点名称进行过滤?的主要内容,如果未能解决你的问题,请参考以下文章

Graphene/Django (GraphQL):如何使用查询参数来排除与特定过滤器匹配的节点?

如何按第一位数字的降序对整数数组进行排序? [关闭]

BigQuery - 按第二个表中存在的值过滤数据

如何格式化行以按第 1 列中的类似值进行颜色分组

按第一项对嵌套列表进行排序——itemgetter 没有做到这一点

如何使用字段作为来自一个 graphql 查询的过滤器来获取位于单独查询中的流体图像?