1
我了解如何在创建GraphQL服务器时设置上下文对象,例如Apollo GraphQL服务器;设置上下文以处理由已触发的订阅触发的请求
const app = express();
app.use(GRAPHQL_URL, graphqlExpress({
schema,
context: {
foo: 'bar'
},
}));
以便在处理传入请求时将上下文对象传递给我的解析器。
但是,当解析器被订阅触发时,我没有看到这个上下文对象(即客户端订阅了GraphQL订阅,并定义了订阅触发时要发送给他们的数据的形状);在这种情况下,上下文看起来是空的对象。
有没有办法确保我的上下文对象在调用了PubSub.publish()调用后的解析器时正确设置?
许多感谢你的回应;中间件interceptit绝对是我需要去的方式,因为我需要根据“触发事件”中的信息修改上下文。 – wabrit
然而,它似乎并没有为我工作 - 如果我以上面建议的方式定义我自己的执行功能,我可以看到它被设置到订阅服务器,但它从来没有打我的方法,并总是通过**标准** graphql execute()方法。查看'graphql \ subscription \ subscribe:subscribeImpl()'它似乎总是调用'graphql \ execution \ execute.js'中的默认值。 – wabrit
好吧,我想我没有正确理解你的问题。你在客户端订阅。并且在订阅中添加一个参数,说明结果应该是什么样子? –