[GraphQL中使用Apollo的动态过滤运算符(在React应用中)

问题描述 投票:0回答:2

我正在使用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'之类的东西。如何实现此目的?

reactjs graphql apollo react-apollo apollo-boost
2个回答
0
投票

[gql可以接收占位符变量

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

所以您可以使用类似的东西

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

0
投票

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

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

或整个论点

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

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

© www.soinside.com 2019 - 2024. All rights reserved.