代码之家  ›  专栏  ›  技术社区  ›  Taylor Austin

如何在graphql查询过滤器中使用或/和,或者制作不区分大小写的过滤器?

  •  3
  • Taylor Austin  · 技术社区  · 6 年前

    正如帖子所要求的,我需要能够搜索3个可能的场景。我需要全部大写、小写或普通大小写。

    如果这是不可能的,有没有一种方法来代替不区分大小写的过滤器?

      allMarkdownRemark(filter: { brand: { eq: $normalBrand } }) { //==> Need more here
            edges {
                node {
                    webImages {
                        url
                    }
                }
            }
        }
    

    我发现有人这样做:

    filter: { OR: [
      {brand: { eq: $normalBrand }}, 
      {brand: { eq: $normalBrand2 }}, 
      {brand: { eq: $normalBrand3 }}
    ]}
    

    但它对我不起作用

    1 回复  |  直到 5 年前
        1
  •  2
  •   Thymine    6 年前

    目前,graphql本身没有任何内置的东西可以使用case-institve搜索,它完全基于graphql服务器运行的任何库,如果选择添加对它的支持。如果您可以修改graphql查询代码,那么您可以以某种方式自己添加它,或者请求宿主/构建它的人以某种方式添加该特性。

    关于或,我怀疑我能说得比 https://github.com/graphql/graphql-js/issues/585#issuecomment-262402544

    graphql不支持和/或运算符,这正是您在问题顶部提到的原因:它不映射到任何类型的存储。我认为,要正确理解为什么它没有这些,就需要改变心理模式。我们认为graphql比数据库语言更类似于rpc语言。

    为了帮助理解心理模型的变化,可以考虑字段和参数,比如编程语言中的函数调用。因此,假设我们对javascript提出了类似的问题:为什么不能键入: getCaseByStatus("open" OR "closed") ?我想,答案是因为javascript不知道这个上下文中的含义。价值观 "open" "closed" 以某种方式组合以产生另一个价值?函数的执行 getCaseByStatus 以某种方式改变?Javascript不能确定——因为基于字段的过滤概念不是Javascript语义的一部分。 …