Javascript 将GraphQL错误存储为字符串
我有一张登录表。当点击submit按钮时,我会通过GraphQL后端检查电子邮件和密码是否正确。如果是,则返回令牌并将其存储在本地存储器中。有时会出现错误,如: “密码不正确”或“用户不存在”。 有没有办法将这些错误存储为字符串,以便以后使用条件渲染显示它们 这就是我的突变的样子:Javascript 将GraphQL错误存储为字符串,javascript,reactjs,typescript,graphql,apollo,Javascript,Reactjs,Typescript,Graphql,Apollo,我有一张登录表。当点击submit按钮时,我会通过GraphQL后端检查电子邮件和密码是否正确。如果是,则返回令牌并将其存储在本地存储器中。有时会出现错误,如: “密码不正确”或“用户不存在”。 有没有办法将这些错误存储为字符串,以便以后使用条件渲染显示它们 这就是我的突变的样子: function submitForm(LoginMutation: any) { const { email, password } = state; if(email && pas
function submitForm(LoginMutation: any) {
const { email, password } = state;
if(email && password){
LoginMutation({
variables: {
email: email,
password: password,
},
}).then(({ data }: any) => {
localStorage.setItem('token', data.loginEmail.accessToken);
})
.catch(console.log)
}
}
我用它作为回报
return (
<Mutation mutation={LoginMutation}>
{(LoginMutation: any) => (
....)}>
</Mutation>
)
我尝试过这个,但它从不记录任何内容:
.then(({data, errors}:any) => {
if (errors && errors.length) {
console.log('Errors', errors);
setErrorMessage(errors[0].message);
console.log('Whats the error', errors[0].message)
} else {
console.log('ID: ', data.createUser.id);
}
})
```
The backend isn't made by me
这取决于您如何设置一些东西,但是,假设您可以在
ShowError
功能中访问state
:
使用GraphQL时,错误可能以两种方式发生:
1.网络错误,将在.catch
中捕获。要处理此问题,您可以在catch
中以状态存储错误消息,然后从ShowError
访问它:
。。。
.catch(错误=>{
setState({errorMessage:err.message});
});
错误的数组的成功响应。要处理此情况,您可以在中添加错误检查。然后:
。。。
.然后({data,errors})=>{
if(errors&&errors.length){
setState({errorMessage:errors[0].message});
}否则{
localStorage.setItem('token',data.loginEmail.accessToken);
}
});
您能看看更新的qs吗?我试了2次。但这对我不起作用。如果您不控制后端,则它们可能会将错误作为网络错误返回。你有没有试着在捕获物中添加很多?您在哪里看到您添加的日志(示例错误)?*添加日志,而不是添加很多
[Log] Error: GraphQL error: Key (email)=(c@c.com) already exists.
.then(({data, errors}:any) => {
if (errors && errors.length) {
console.log('Errors', errors);
setErrorMessage(errors[0].message);
console.log('Whats the error', errors[0].message)
} else {
console.log('ID: ', data.createUser.id);
}
})
```
The backend isn't made by me