我正在尝试使用in运算符执行查询,其中条件基于数组中的值。我如何执行下面的查询来获取一个数组,并将其作为基于变量数组的条件?我正在使用reactjs + gatsby。
... graphql`
query pageHeader {
.... there is another query in the real code above this line
allContentInSites (filter: {slug: {in: ` + JSON.stringify(searchCriteria.map(item => item.value)) + ` }}) {
edges {
node {
title,
link
}
}
}
}'
我最初以为上面的示例代码会为in条件传递一个json字符串对象,但这似乎打破了页面。
发布于 2018-08-16 03:12:34
这在Gatsby中的页面查询中不起作用。在执行代码之前,会静态地计算GraphQL查询并将其替换为数据。
不过,您可以潜在地挂钩到Gatsby提供的Node,以便在引导期间构建此查询。您可以使用onPreExtractQueries创建查询,也可以使用gatsby-node.js
中任何节点API提供的graphql
对象来生成页面。
发布于 2018-08-16 05:00:26
如果你想实现动态过滤条件,你有两个选择: 1)你可以使用stringified json,并将其作为字符串发送,然后在解析器的服务器上解析它;2)你可以使用自定义标量graphql-type-json作为参数类型,或者实现你自己的custom scalar。
这样做的最大缺点是失去了GraphQL的强类型特性。您也可以实现动态模式,但它有点夸张,通常不是一个好的实践。只有当这是唯一的选择时,我才会使用动态参数。通常,它可以重新排列,这样您就不必使用动态参数。
我不确定它是否有帮助,因为我不熟悉gatsby在这方面的具体问题,但这应该适用于一般的GraphQL模式。
https://stackoverflow.com/questions/51863657
复制相似问题