我在服务器上使用GraphQL和猫鼬。
发生验证错误时,GraphQL突变会发送状态码为200的响应。在客户端,响应如下所示:
{
"data": null,
"errors": [{
"message": "error for id...",
"path": "_id"
}]
}Run Code Online (Sandbox Code Playgroud)
我想使用catchapollo-client突变承诺的功能来访问验证错误。就像是:
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) });
});Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
我们使用GraphQL订阅和pubsub订阅帖子.
当超过10个订阅发生时,我们得到节点警告"MaxListenersExceededWarning:检测到可能的EventEmitter内存泄漏".
是否可以在pubsub类中引发最大侦听器?
pubsub类位于一个单独的模块中,如下所示:
import { PubSub } from 'graphql-subscriptions';
const pubsub = new PubSub();
export { pubsub };Run Code Online (Sandbox Code Playgroud)
订阅服务器如下所示:
import { SubscriptionManager } from 'graphql-subscriptions';
import { createServer } from 'http';
import { SubscriptionServer } from 'subscriptions-transport-ws';
import { pubsub } from './subscriptions';
import executableSchema from './executableSchema';
const WS_PORT = 8080;
const websocketServer = createServer((request, response) => {
response.writeHead(404);
response.end();
});
websocketServer.listen(WS_PORT, () => console.log(
`Websocket Server is now running on http://localhost:${WS_PORT}`
));
const subscriptionManager = new SubscriptionManager({
schema: …Run Code Online (Sandbox Code Playgroud)