我正在使用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'
之类的东西。如何实现此目的?
[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
}
}
`;
您可以传递整个表达式,而不是传递日期作为变量,>
query get_items($exp: SomeType) { items(where: { date: $exp }) { name } }
或整个论点
query get_items($where: SomeOtherType) { items(where: $where) { name } }
用于变量的类型是特定于架构的-您可以在可通过控制台使用的GraphiQL界面中查找有关Hasura生成的架构的信息(只需搜索字段名称)。