首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >graphql:使用动态过滤条件进行查询

graphql:使用动态过滤条件进行查询
EN

Stack Overflow用户
提问于 2018-08-16 01:34:08
回答 2查看 2K关注 0票数 0

我正在尝试使用in运算符执行查询,其中条件基于数组中的值。我如何执行下面的查询来获取一个数组,并将其作为基于变量数组的条件?我正在使用reactjs + gatsby。

代码语言:javascript
复制
... 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字符串对象,但这似乎打破了页面。

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 03:12:34

这在Gatsby中的页面查询中不起作用。在执行代码之前,会静态地计算GraphQL查询并将其替换为数据。

不过,您可以潜在地挂钩到Gatsby提供的Node,以便在引导期间构建此查询。您可以使用onPreExtractQueries创建查询,也可以使用gatsby-node.js中任何节点API提供的graphql对象来生成页面。

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 05:00:26

如果你想实现动态过滤条件,你有两个选择: 1)你可以使用stringified json,并将其作为字符串发送,然后在解析器的服务器上解析它;2)你可以使用自定义标量graphql-type-json作为参数类型,或者实现你自己的custom scalar

这样做的最大缺点是失去了GraphQL的强类型特性。您也可以实现动态模式,但它有点夸张,通常不是一个好的实践。只有当这是唯一的选择时,我才会使用动态参数。通常,它可以重新排列,这样您就不必使用动态参数。

我不确定它是否有帮助,因为我不熟悉gatsby在这方面的具体问题,但这应该适用于一般的GraphQL模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51863657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档