【问题标题】:Shopify: Get the userErrors from checkoutLineItemsReplace MutationShopify:从 checkoutLineItemsReplace Mutation 获取 userErrors
【发布时间】:2020-08-22 15:34:32
【问题描述】:

我有这个突变,我正在尝试访问 userErrors,但我无法获取代码或字段,并且消息是我唯一可以获得的,还是我做错了什么?突变正在起作用,因为正在删除产品,但是当发生一些错误时,我需要进入代码或字段才能执行特定操作。

export const ITEM_REMOVED = gql`
    mutation checkoutLineItemsReplace($lineItems: [CheckoutLineItemInput!] !, $checkoutId: ID!) {
        checkoutLineItemsReplace(lineItems: $lineItems, checkoutId: $checkoutId) {
            userErrors {
                code
                field
                message
            }
            checkout {
                ...CheckoutFragment
            }
        }
    }
    ${CHECKOUT_FRAGMENT}
`


const [mutationItemRemoved] = useMutation(ITEM_REMOVED)

// Item removed
const itemRemoved = (lineItems) => {
    mutationItemRemoved({
        variables: {
            checkoutId: props.checkout.id,
            lineItems,
        },
    }).then(r => {
        console.log(r.data.checkoutLineItemsReplace.checkout)
        props.updateCheckout(r.data.checkoutLineItemsReplace.checkout)
    }).catch(error => {
        console.log(error.code) // undefined
        console.log(error.field) // undefined
        console.log(error.message)
    })
}

【问题讨论】:

  • 错误不是位于成功响应中(又名.then(r => r.errors)),而是位于r.errors 下?
  • 如果是这样,那么它将永远无法访问,因为发生某些错误时正在进入 .catch 块
  • 如果它进入了 catch 块,这意味着存在语法错误或其他问题,而不是查询返回错误。如果查询有效,它将始终返回状态 200 并返回成功,即使您传递了无效的变体 ID。您必须有代码错误而不是 GraphQL 响应错误。如果您为此使用特定的库,至少这是 GraphQL 的默认工作流程,我不能保证什么都没有。
  • 我明白了,我会再次检查它,因为突变实际上正在添加或删除项目,我能得到的唯一错误是 catch 块中的消息,并且是预期的消息,但代码是我需要的那个,因为消息可能会在某个时候改变。我正在使用 Storefront API 和 Apollo。
  • 我没有太多 Apollo 经验,所以我不能确定他们是否在那里拆分响应并在出现 GraphQL 错误时抛出错误。这需要有更多经验的人来回答。祝你好运。

标签: shopify shopify-storefront-api


【解决方案1】:

我很确定 Shopify 没有在 userErrors 上实现 code 返回。他们将在errors 上返回一个包含扩展名的代码。但是userErrors似乎只返回fieldmessage,而field经常是空白的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多