在服务器上,我在模式中定义了枚举和查询:
type Query {
hello: String!
getData(dataType: DataType!): [DataPoint]
}
enum DataType {
ACCOUNT,
USER,
COMPANY
}
...
在客户端:
export const GET_DATA = gql`
query($dataType: DataType) {
getData(dataType: $dataType) {
...
}
}
`;
每当我尝试在ApolloClient中调用查询时,我都会得到一个验证错误,因为Apollo期望的是值,而不是字符串,所以不是";账户";,它期望ACCOUNT。尝试传递整数值显然也没有效果。
const dataResponse = useQuery(GET_DATA, {
variables: { dataType: "ACCOUNT" },
});
为了能够正确地将Enum值作为变量传递,我需要对服务器或客户端实现进行哪些更改?理想情况下,我希望能够将字符串值传递到useQuery方法中。
在客户端上执行:
export const GET_DATA = gql`
query($dataType: String) {
getData(dataType: $dataType) {
...
}
}
`;
这是因为您的枚举是字符串的枚举。