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

如何在graphql查询筛选器中使用或/和,或制作不区分大小写的筛选器?,graphql,gatsby,Graphql,Gatsby,就像帖子中的提问一样,我需要能够搜索3种可能的场景。我需要所有大写、小写或普通大小写 如果这是不可能的,有没有办法做一个不区分大小写的过滤器呢 allMarkdownRemark(filter: { brand: { eq: $normalBrand } }) { //==> Need more here edges { node { webImages { url

就像帖子中的提问一样,我需要能够搜索3种可能的场景。我需要所有大写、小写或普通大小写

如果这是不可能的,有没有办法做一个不区分大小写的过滤器呢

  allMarkdownRemark(filter: { brand: { eq: $normalBrand } }) { //==> Need more here
        edges {
            node {
                webImages {
                    url
                }
            }
        }
    }
我发现有些人在这样做:

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

但是它对我不起作用

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

关于或,我怀疑我能说得比

GraphQL不支持AND/OR运算符,原因正是您在文章顶部提到的:它不映射到任何类型的存储。我认为要正确理解为什么它没有这些,需要改变思维模式。我们认为GraphQL比数据库语言更类似于RPC语言

为了帮助理解心智模型的转变,思考编程语言中的函数调用等字段和参数是很有用的。因此,假设我们问一个类似的javascript问题:为什么不能键入:
getCaseByStatus(“打开”或“关闭”)
?我认为,答案是因为JavaScript不知道在这种上下文中是什么意思。是否应以某种方式组合值
“打开”
“关闭”
,以产生另一个值?函数的执行是否应该以某种方式改变?JavaScript不能确定——因为基于字段的过滤概念不是JavaScript语义的一部分。


正则表达式有效吗?差不多

  allMarkdownRemark(filter: { brand: { 
     regex: "/($normalBrand)|($normalBrand2)|($normalBrand3)/" 
  } }) { 
        edges {
            node {
                webImages {
                    url
                }
            }
        }
    }

尝试使用小写字母“或”


过滤器:{or:[{brand:{eq:$normalBrand}},{brand:{eq:$normalBrand2}},{brand:{eq:$normalBrand3}}]}

这可能是相关的:如果你不能问它问题,它不是一种查询语言。