1

我正在使用 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'});

注意现在_eq操作符是如何被硬编码的。我正在实现一个功能,我正在使该运算符动态以启用诸如'_gt'和之类的东西'_lt'。我怎样才能实现这一目标?

4

2 回答 2

1

gql可以接收占位符变量

函数 gql(literals: any, ...placeholders: any[]): any;

所以你可以使用这样的东西

export const QUERY_ITEMS = (placeholder) => gql`
    query get_items($date: date) {
        items(where: {date: {${placeholder}: $date}}) {
            name
        }
    }
`;
于 2020-01-31T00:57:06.210 回答
1

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

query get_items($exp: SomeType) {
  items(where: { date: $exp }) {
    name
  }
}

或整个论点

query get_items($where: SomeOtherType) {
  items(where: $where) {
    name
  }
}

您用于变量的类型是特定于模式的——您可以在控制台可用的 GraphiQL 界面中查找有关 Hasura 生成的模式的信息(只需搜索字段名称)。

于 2020-01-31T01:32:12.750 回答