我正在尝试使用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字符串对象,但这似乎破坏了页面。
答案 0 :(得分:0)
这不适用于您在Gatsby中进行的页面查询。在执行代码之前,将对GraphQL查询进行静态评估并替换为数据。
尽管如此,您可能会在启动过程中使用Gatsby提供的Node API来构建此查询。您可能可以使用onPreExtractQueries创建查询,或者可能使用graphql
中任何节点API提供的gatsby-node.js
对象来生成页面。
答案 1 :(得分:0)
如果您想实施动态过滤条件,则有几种选择 1)您可以使用字符串化的json并将其作为String发送并在解析器中的服务器上进行解析 2)您可以使用自定义标量graphql-type-json作为参数类型,也可以实现自己的custom scalar。
最大的缺点是您失去了GraphQL的强类型功能。您也可以实现动态模式,但这有点过大,通常不是一个好习惯。仅当它是唯一选项时,我才会使用动态参数。通常可以重新安排它,以便您不必使用动态参数。
我不确定这是否有帮助,因为我对此不熟悉gatsby的特定问题,但这在一般的GraphQL模式中应该可以使用。