graphql,如何按第一个节点名称进行过滤?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了graphql,如何按第一个节点名称进行过滤?相关的知识,希望对你有一定的参考价值。
如果我有graphQL
节点,如
allFile
edges
...
name1 ...
name2 ...
我如何通过qazxswpoi和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):如何使用查询参数来排除与特定过滤器匹配的节点?