簡體   English   中英

GraphQL - 突變響應后的自定義錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM