gpt4 book ai didi

graphql - Apollo 客户端变异错误处理

转载 作者:行者123 更新时间:2023-12-04 08:21:41 24 4
gpt4 key购买 nike

我在服务器上使用 GraphQL 和 mongoose。

当发生验证错误时,GraphQL 突变会发送一个状态码为 200 的响应。在客户端,响应如下所示:

{
"data": null,
"errors": [{
"message": "error for id...",
"path": "_id"
}]
}


我想使用 catch 访问验证错误apollo-client 突变 promise 的功能。就像是:

      this.props.deleteProduct(this.state.selectedProductId).then(response => {
// handle successful mutation
}).catch(response => {
const errors = response.errors; // does not work
this.setState({ errorMessages: errors.map(error => error.message) });
});


如何才能做到这一点?

最佳答案

注意:这个答案(可以说是整个问题)现在已经过时了,因为突变错误出现在 catch 中。在最新版本的 Apollo Client 中。

来自突变的 GraphQL 错误目前显示在 errors 中内部响应字段 then .我认为肯定有人声称它们应该出现在 catch 中。相反,这里是来自 GitHunt 的一个突变片段:

// The container
const withData = graphql(SUBMIT_REPOSITORY_MUTATION, {
props: ({ mutate }) => ({
submit: repoFullName => mutate({
variables: { repoFullName },
}),
}),
});

// Where it's called
return submit(repoFullName).then((res) => {
if (!res.errors) {
browserHistory.push('/feed/new');
} else {
this.setState({ errors: res.errors });
}
});

关于graphql - Apollo 客户端变异错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43471623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com