如何从 Apollo 解析器中提取错误数据?
我有一个带有这样的解析器的阿波罗服务器:
return new Promise((resolve, reject) => {
return service.searchForUsers(searchQuery)
.then(...doSomething)
.catch(error => {
reject({ errorCode: error.code });
});
});
});
我的客户端中有一个GraphQl查询:
query userSearch($searchQuery: String!) {
searchUsers(searchQuery: $searchQuery) {
...usersFragment }
}
当我从客户端捕获解析器时,我的预期错误对象被包裹在错误中。 JSON。
error = {
extraInfo: undefined,
message: "{\"name\":\"Error\",\"message\":\"Unexpected error value: { errorCode: 102 }\",\"stack\":[]}",
networkError: ...,
stack: ...
}
现在我知道这是阿波罗错误的格式,但我不想手动解析此对象以获取预期的错误数据。这很难解析,因为.Message不是有效的JSON字符串,因此字符之间存在空格。
还有其他方法可以拒绝解析器中的错误,或者我可以在客户端中塑造我的GraphQl查询以修复此错误术语的任何其他方法?
我尝试在这样的GraphQl查询中添加一些字段,但是错误字段似乎并未暴露出来。
query userSearch($searchQuery: String!) {
searchUsers(searchQuery: $searchQuery) {
...usersFragment
}
error {
message
}
}
I have an apollo server with a resolver like this:
return new Promise((resolve, reject) => {
return service.searchForUsers(searchQuery)
.then(...doSomething)
.catch(error => {
reject({ errorCode: error.code });
});
});
});
I have a graphql query in my client like this:
query userSearch($searchQuery: String!) {
searchUsers(searchQuery: $searchQuery) {
...usersFragment }
}
When I catch the resolver from my client, it looks like this, where my intended error object gets wrapped inside error.message in a malformed JSON.
error = {
extraInfo: undefined,
message: "{\"name\":\"Error\",\"message\":\"Unexpected error value: { errorCode: 102 }\",\"stack\":[]}",
networkError: ...,
stack: ...
}
Now I know that this is the format of an Apollo Error, but I don't want to manually parse this object to get the expected error data. This is hard to parse because the .message is not a valid JSON string, there is whitespace in between the characters.
Is there any other way I can reject the error in my resolver, or any other way I can shape my graphql query in the client to fix this error jargon?
I've tried adding some fields to my graphql query like this, but the error field does not seem to be exposed.
query userSearch($searchQuery: String!) {
searchUsers(searchQuery: $searchQuery) {
...usersFragment
}
error {
message
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论