Reactjs 使用Apollo在GraphQL中使用动态过滤器操作符(在React应用程序中)

Reactjs 使用Apollo在GraphQL中使用动态过滤器操作符(在React应用程序中),reactjs,graphql,apollo,react-apollo,apollo-boost,Reactjs,Graphql,Apollo,React Apollo,Apollo Boost,我正在使用Apollo向我的GraphQL服务器发出请求 我的问题如下: export const QUERY_ITEMS = gql` query get_items($date: date) { items(where: {date: {_eq: $date}}) { name } } `; const {data} = useQuery(QUERY_ITEMS, variable: {date: '2020-01-0

我正在使用Apollo向我的GraphQL服务器发出请求

我的问题如下:

export const QUERY_ITEMS = gql`
    query get_items($date: date) {
        items(where: {date: {_eq: $date}}) {
            name
        }
    }
`;

const {data} = useQuery(QUERY_ITEMS, variable: {date: '2020-01-01'});

请注意,
\u eq
运算符现在是如何硬编码的。我正在实现一个功能,使该操作符成为动态的,以启用诸如
“u gt”
“u lt”
之类的功能。如何实现这一点?

gql
可以接收占位符变量

函数gql(文字:any,…占位符:any[]):any;

所以你可以用这样的东西

export const QUERY_ITEMS = (placeholder) => gql`
    query get_items($date: date) {
        items(where: {date: {${placeholder}: $date}}) {
            name
        }
    }
`;

您可以传递整个表达式,而不是将日期作为变量传递

query get_items($exp: SomeType) {
  items(where: { date: $exp }) {
    name
  }
}
还是整个论点

query get_items($where: SomeOtherType) {
  items(where: $where) {
    name
  }
}
变量使用的类型是特定于模式的——您可以通过控制台在GraphiQL界面中查找Hasura生成的模式的相关信息(只需搜索字段名)。

试试这个