发送带空格的单词时出现Apollo-GraphQL错误?

时间:2019-06-18 11:14:57

标签: javascript graphql apollo react-apollo

我有一个按状态过滤的GQL阿波罗。 GQL接受“ ACCEPTED”或“ DECLINED”等值。 但是,我注意到当我发送带有空格的“ GOOD LEAVER”之类的过滤器时,它将不再起作用。有什么想法吗? 我收到此错误

Stack: GraphQLError: Variable "$stateIn" got invalid value ["GOOD LEAVER"].
In element #0: Expected type "MemberStateType", found "GOOD LEAVER".

要发送此变量,我正在使用util函数从props获取值,该函数是

stateIn:
  getFilterProp('status') &&
  getOr([], 'status', selectedFilterOptions).map(({ name }) =>
    toUpper(name)
)

我是发送值的100%,因为我可以在“网络”标签中看到它们,当我要使用过滤器“ GOOD LEAVER”时,它只会引发上述错误,否则,它就可以正常工作。

1 个答案:

答案 0 :(得分:0)

从上下文来看,我假设您的$stateIn变量的类型为[MemberStateType],而MemberStateType是一个枚举。如错误所示,GOOD LEAVER对于此枚举不是有效值。枚举值必须是有效的GraphQL名称,因此它们必须与以下正则表达式匹配:

/[_A-Za-z][_0-9A-Za-z]*/

但是,重点并不是要传递带有空格的名称,而是要传递的值与架构中定义的枚举的可能值不匹配。如果您传递了FWaFJRYyTPx之类的值或其他无效的枚举值,则会看到类似的错误。

请咨询GraphQL端点的架构,以确定有效的枚举值并相应地转换输入。