GraphQL - 突变响应后的自定义错误消息
Posted
技术标签:
【中文标题】GraphQL - 突变响应后的自定义错误消息【英文标题】:GraphQL - custom error message after mutation response 【发布时间】:2020-05-05 15:57:05 【问题描述】:我正在学习 Graphql,但我遇到了一个无法进一步解决的问题。
在后端(nodeJS)中,您可以输入时事通讯列表,它可以正常工作。 如果电子邮件地址已经存在,Mailchimp 将返回“成员存在”。到目前为止一切都很好。
如果我理解正确,答案必须是相应类型的格式。 如果注册不起作用,我现在想发出自定义消息。
那么,我必须如何继续调整正确的响应并发送自定义消息?
突变:
createNewsletterSubscription(
data: CreateNewsletterSubscriptionInput
): NewsletterSubscription!
还有类型:
type NewsletterSubscription
email: String!
name: String!
回复给我“会员存在”:
JSON.parse(error.response.text).title
变异方法:
async createNewsletterSubscription(parent, args, db , info)
const name, email = args.data;
const newEmailSubscription =
email,
name,
;
const FNAME = name;
try
const result = await request
.post( `https://$mailchimpInstance.api.mailchimp.com/3.0/lists/$MAILCHIMP_LIST_ID/members`
)
.set(
'Authorization',
// eslint-disable-next-line no-buffer-constructor
`Basic $new Buffer(`any:$MAILCHIMP_APIKEY`).toString(
'base64'
)`
)
.send(
email_address: email,
status: 'subscribed',
merge_fields:
FNAME,
,
);
if (result.status === 200 && result.body.status === 'subscribed')
return newEmailSubscription;
catch (error)
// If member exists throw new error
return JSON.parse(error.response.text).title;
,
这是我的 GraphQL Playgrund 中的输出:
"data": null,
"errors": [
"message": "Cannot return null for non-nullable field NewsletterSubscription.email.",
"locations": [
"line": 3,
"column": 5
],
"path": [
"createNewsletterSubscription",
"email"
]
]
【问题讨论】:
【参考方案1】:catch (error) // If member exists throw new error return JSON.parse(error.response.text).title;
您不能只返回简单的响应 - 看起来像正常响应,而不是错误。
处理错误在阿波罗服务器docs有详细说明
【讨论】:
谢谢。这个答案对我有帮助。我找到了以 graphql 方式编辑错误消息的解决方案;)以上是关于GraphQL - 突变响应后的自定义错误消息的主要内容,如果未能解决你的问题,请参考以下文章
使用来自突变解析器的 GraphQL Yoga 响应自定义 HTTP 代码
AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误