[英]GraphQL - custom error message after mutation response
我正在學習 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"
]
}
]
}
} catch (error) { // If member exists throw new error return JSON.parse(error.response.text).title; }
你不能只返回簡單的響應——看起來像正常的響應,而不是錯誤。
處理錯誤在 apollo server docs中有詳細解釋
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.