React中如何向GraphQL/AWS AppSync传递enum类型字段并解决报错
报错根因
GraphQL 枚举类型要求传入的值必须和 schema 中定义的枚举可选值 完全匹配(拼写、大小写完全一致),不能传入枚举范围外的任意字符串,你的报错属于值不匹配或者字段配置错误导致的。
修复步骤
1. 先核对2个基础信息
- 核对 schema.graphql 中对应枚举的字段名:你报错提示是
companyType has an invalid value,先确认你定义的枚举字段到底是companyStatus还是companyType,input 中的 key 必须和 schema 定义完全一致。 - 打印
userCtx.user.status的实际返回值,和枚举的可选值做比对,确认是否在枚举允许的范围内。
2. 修复代码
首先你给出的代码片段本身存在语法问题:companyStatus: userCtx.user.status 行末尾缺少逗号,先补上。
如果是枚举值不匹配的问题,增加一层值映射转换即可,示例如下:
// 映射表和schema中定义的枚举值完全对齐,比如你的schema枚举是ACTIVE/INACTIVE/PENDING的话 const STATUS_MAP = { 1: 'ACTIVE', 0: 'INACTIVE', '待审核': 'PENDING' // 其他你业务中user.status可能返回的值,都对应到枚举的合法值即可 } var input = { companyName: userCtx.user.company, companyStatus: STATUS_MAP[userCtx.user.status] ?? 'PENDING', // ??后是兜底默认值,避免空值报错 createdAt: new Date().toISOString() }
如果是字段名定义错误,把input中的key从companyStatus改成和schema一致的companyType即可。
内容的提问来源于stack exchange,提问作者Priyam Ghosh
相关产品推荐
相关产品推荐

