gpt4 book ai didi

javascript - 如何使用 React-Apollo 处理 GraphQL 错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:40 24 4
gpt4 key购买 nike

我正在尝试使用服务器上的 Express + Mongoose 和客户端上的 React + Apollo 从 Rest API 迁移到 GraphQL。

async resolve(_, { email, password, passwordConfirmation }) { // Sign Up mutation
const user = new User({ email });
user.password = password;
user.passwordConfirmation = passwordConfirmation;
try{
const createdUser = await user.save();
return createdUser;
} catch(error) {
console.log(error); // Returns errors object like {email: {message: 'E-mail is required'}}
throw new Error(error); // But on the client there is a string with all errors
}
}`

我如何处理客户端的整个错误对象?

最佳答案

当您进行更改时,Apollo 客户端会返回一个 promise 。该 promise 的错误可以在突变的结果 promise 的 catch block 中访问。请参阅下面的示例。

如果我的登录突变有错误,我将在返回的 promise 的 catch block 中访问它们,然后将这些错误设置为组件中的本地状态。从那里可以呈现错误(如果存在),或者如果您愿意,甚至可以将其传递给要呈现的子组件。请注意,错误通常以数组的形式返回。

class LoginForm extends Component {
constructor(props) {
super(props);

this.state = { errors: [] };
}


onSubmit({ email, password }) {
this.props.mutate({
variables: { email, password },
refetchQueries: [{ query }]
}).catch(res => {
const errors = res.graphQLErrors.map(error => error.message);
this.setState({ errors });
});
}

render() {
return (
<div>
<AuthForm
errors={this.state.errors}
onSubmit={this.onSubmit.bind(this)}
/>
</div>
);
}
}

export default graphql(query)(
graphql(mutation)(LoginForm)
);

关于javascript - 如何使用 React-Apollo 处理 GraphQL 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787299/

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