how to make a case-insensitive graphql query?

谁都会走 提交于 2020-12-10 05:51:10

问题


Using GraphQL to fetch and parse a config file, sometimes the file name be podfile, sometimes be Podfile, so I am wondering how to make a case-insensitive query?

now I only can query repository->object: podfile and Podfile, but if the file name be podFILE, again not works.

query($org_name: String!, $resp_name: String!)
                {
                repository(owner: $org_name name: $resp_name){
                          object: object(expression: "%s:proj.ios_mac/podfile"){
                                                              ... on Blob{
                                                                          text
                                                                          }
                                                              }
                          ios_object_1: object(expression: "%s:proj.ios_mac/Podfile"){
                                                              ... on Blob{
                                                                          text
                                                                          }
                                                              }
                          }
                }

REF:https://github.community/t5/How-to-use-Git-and-GitHub/graphql-api-resource-query-is-case-sensitive/m-p/6003


回答1:


Names in GraphQL are case-sensitive, as per the spec. Names include field names, type names, variable names etc.

So, in short it is not possible to do it.




回答2:


Using the _ilike operator makes the query case-insensitive.

query MyQuery {
  heroes(where: {name: {_ilike: "%baTmaN%"}}) {name, movie }
}

Source & documentation: https://github.com/hasura/graphql-engine/issues/1516




回答3:


_similar: "%key%" performs Case sensitive query
_ilike:   "%key%" performs case insensitive query

For Eg : Below query will return all devices with name contains iphone. It fails to return objects if name contains "iPhone" i.e. the query is case sensitive.

query MyQuery {
  devices: devices(where: {name: { _similar: "%iphone%"}}) {
    name
 }
}

Below query will return all objects with name containing "iphone", "IPhone". i.e. case insensitive

query MyQuery {
  devices: devices(where: {name: { _ilike: "%iphone%"}}) {
    name
 }
}


来源:https://stackoverflow.com/questions/53878566/how-to-make-a-case-insensitive-graphql-query

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!