【问题标题】:Apollo Server Subscription subscribe method is never calledApollo Server Subscription 订阅方法永远不会被调用
【发布时间】:2020-10-31 06:03:18
【问题描述】:

我有一个现有的 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}

我可以看到 console.log('subscription server resolve', { root }) 正在打印,尽管 root 未定义。但是 subscribe 中类似的console.log('````') 并没有被执行。

【问题讨论】:

  • 任何人都可以提供任何更新?

标签: graphql apollo graphql-js express-graphql graphql-subscriptions


【解决方案1】:

您需要在某个地方(通常在您的解析器之一中)调用 pubsub.publish 来触发订阅。

https://www.apollographql.com/docs/apollo-server/data/subscriptions/#subscriptions-example

【讨论】:

  • 感谢@benawad 的回复。我已经有了它,我在其中一个使用pubsun.publish 到给定主题的突变。但是当我运行订阅时,它没有在听..并返回 null 。当我尝试放置 console.log 时,我看到 subscribe 未执行
猜你喜欢
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多