Reactjs 使用Apollo在GraphQL中使用动态过滤器操作符(在React应用程序中)
我正在使用Apollo向我的GraphQL服务器发出请求 我的问题如下: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
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生成的模式的相关信息(只需搜索字段名)。试试这个