【问题标题】:Apollo-GraphQL error when sending word with space?发送带空格的单词时出现 Apollo-GraphQL 错误?
【发布时间】:2019-11-01 00:34:23
【问题描述】:

我有一个按状态过滤的 GQL Apollo。 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”时,它只会引发上述错误,否则,它工作得很好。

【问题讨论】:

  • 这是一个查询!

标签: javascript graphql apollo react-apollo


【解决方案1】:

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

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

但是,关键不是您传入的名称带有空格——关键是您传入的值与架构中定义的枚举的可能值不匹配.如果您传入 FWaFJRYyTPx 之类的值或其他一些无效的枚举值,您会看到类似的错误。

查阅 GraphQL 端点的架构以确定有效的枚举值并相应地转换您的输入。

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 2021-02-13
    • 2019-09-16
    • 2019-10-18
    • 2021-04-23
    • 2020-12-22
    • 1970-01-01
    • 2020-03-08
    • 2017-06-23
    相关资源
    最近更新 更多