我有以下代码,我正在尝试决定如何处理错误:
const gqlWrapper = graphql(registerMutation, {
props: ({ mutate, ownProps }) => ({
registerUser: userDetails => {
mutate({
variables: { ...userDetails },
update: (proxy, resp) => {
// perform update to local state based on success
}
}).catch(err => {
console.log(err);
// how to update components from here?
});
}
})
});
export default gqlWrapper(Register);
服务器发回一个GraphQL错误对象,并将其发回,使其出现在突变的catch()
块中。如果变异成功,组件的数据将使用proxy
参数更新,但我看不到处理错误的等价方法。
理想情况下,我希望更新catch
块中的Apollo缓存,但在这一点上,我甚至不能向组件或状态注入道具。
最终的结果是在Register组件上设置一个prop/state,它显示了一个带有条件呈现的错误消息组件。一种方法可以是处理registerUser突变产生的错误:
// Where the registerUser mutation get's initiated - on form submit
onSubmit={() => {
this.props.registerUser(values);
// the error could be caught here but I don't want this in the UI - I'd rather keep all this outside
}}
但我觉得这增加了UI的体积,我宁愿在页面底部,旁边的突变函数。有什么办法来解决这个问题,还是我错过了一些明显的东西?
谢谢!
您最好在Apollo客户机中使用https://www.npmjs.com/package/apollo-link-error。这将允许您处理错误,并根据这些错误应用所需的任何自定义逻辑。它还允许您将.catch
排除在组件之外。实际上,Apollo的文档中推荐了这个模块
我在服务器上使用GraphQL和mongoose。 当发生验证错误时,GraphQL突变发送状态代码为200的响应。在客户端,响应如下所示: 我想使用阿波罗客户端突变promise的功能访问验证错误。类似: 如何做到这一点?
在后端,我进行了调试,并收到了请求,它根据客户机上设置的令牌查找用户,但随后什么也不做,只在我试图从应用程序发送时返回给我400,在graphiql浏览器上。 我错过了什么?非常感谢。
我目前使用vue-apollo包为Apollo客户机,使用VueJs堆栈,使用django和graphene-python为我的GraphQl API。 下面是vue-apollo的一个简单设置: 返回以下错误响应: 然而,在我的vue应用程序中,常规查询可以很好地解决正确的响应,除了突变,所以这让我真的很困惑
我正在为Angular练习&。 我在从客户端创建查询时遇到了问题。 我已经成功地在后端创建了graphql查询。 无法找到解决方案答案。请帮忙。
假设Component-TODOList需要以两种不同的方式显示TODO的列表,listview和gridview。假设我想保持两个视图作为不同的组件,那么最佳实践是什么- > 使用graphql查询创建TodoList组件,然后将查询结果传递给TODOListView和TODOGridView组件? 创建没有graphql查询的TodoList组件,然后在ToDoListView和TODOGri
代码如下 我已经创建了一个DynamoDB表我的主键是,它是字符串。 在DynamoDB中,的表值是我需要更新为David。上面是代码。为什么错误会抛出元模式 完整错误如下所示 “errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):更新表达式中提供的文档路径对于更新无效”,“errorType”:“ClientError”, 在代码下面尝