代码之家  ›  专栏  ›  技术社区  ›  user1790300

graphql:使用动态筛选条件查询

  •  0
  • user1790300  · 技术社区  · 6 年前

    我试图使用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字符串对象,但这似乎会破坏页面。

    2 回复  |  直到 6 年前
        1
  •  0
  •   coreyward    6 年前

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

    不过,您可以在引导期间连接到Gatsby提供的节点api来构建这个查询。你可以使用 onPreExtractQueries 创建查询,或者可能使用 graphql gatsby-node.js 生成页面。

        2
  •  0
  •   David Mraz    6 年前

    1) 您可以使用stringified json并将其作为字符串发送,然后在服务器上的解析器中进行解析 2) 可以使用自定义标量 graphql-type-json custom scalar .

    我不确定它是否有用,因为我不熟悉gatsby的具体问题,但是这应该可以在一般的GraphQL模式中工作。