我有一个现有的Express ApolloServer。我添加了订阅。我可以看到从Playground
触发订阅时,称为resolve方法。但是,永远不会调用subscribe
方法
const { PubSub, withFilter } = require ('apollo-server');
const pubsub = new PubSub();
const SOMETHING_CHANGED_TOPIC = 'something_changed';
const mySubscription = {
Subscription: {
somethingChanged: {
resolve: root => {
console.log('subscription server resolve', { root })
return root
},
subscribe: () => {
console.log('I AM HERE IN SUBSCRIPTION', pubsub.asyncIterator(SOMETHING_CHANGED_TOPIC))
return pubsub.asyncIterator(SOMETHING_CHANGED_TOPIC)
}
}
}
};
module.exports = { mySubscription}
尽管root尚未定义,但我可以看到console.log('subscription server resolve', { root })
正在打印。但是未执行订阅中类似的console.log('````')
。
答案 0 :(得分:0)
您需要在某个地方(通常在您的一个解析器中)调用pubsub.publish
来触发订阅。
https://www.apollographql.com/docs/apollo-server/data/subscriptions/#subscriptions-example