【问题标题】:Apollo v2 subscriptions graphqlApollo v2 订阅 graphql
【发布时间】:2020-10-08 07:34:41
【问题描述】:

我在订阅方面遇到了问题。 实际上,以这种方式实现here 所述的订阅解析器可以正常工作:

  Subscription: {
  event_subscription:{
       subscribe: withFilter(
        () => pubsub.asyncIterator('ObjectName'),
        (payload, variables) => {
          return payload.objectName.id === variables.id
        },
      ),
  }  }

但我需要在 event_subscription 调用上添加一些逻辑。 我正在尝试像这样添加一个简单的 console.log

Subscription: {
      event_subscription:{
      console.log("TEST"),
      subscribe: withFilter(
        () => pubsub.asyncIterator('ObjectName'),
        (payload, variables) => {
          return payload.objectName.id === variables.id
        },
      ),
    }
}

但它不起作用并返回此错误:

{
 "error": {
    "message": "Subscription field must return Async Iterable. Received: undefined."
  }
}

订阅内不能调用函数吗? 如何在订阅调用中调用函数? 感谢您的帮助

【问题讨论】:

    标签: node.js graphql apollo subscription


    【解决方案1】:

    你需要调用 pubsub.publish(SOME_KEY,{ 你的变量 }); 通常在突变中执行逻辑。在你的情况下 SOME_KEY = 'ObjectName'

    【讨论】:

    • 实际上我已经管理了发布方法并且它工作正常。我的问题与在 event_subscription 中调用某些函数的可能性有关。之前似乎甚至无法使用 console.log 打印一些东西,它让我返回了我报告的错误。所以没有console.log它工作正常,使用console.log它不起作用。你知道它是否存在一种在事件订阅中添加一些逻辑的方法?
    • 如果你在前端使用 react,你可以使用带有选项 onsubscriptiondata 的 useSubscription 钩子并在那里执行逻辑,在后端我认为这是不可能的。
    猜你喜欢
    • 2017-09-19
    • 2022-12-12
    • 2020-08-03
    • 2020-07-07
    • 2017-09-01
    • 2022-12-12
    • 2020-11-08
    • 2020-10-18
    • 2020-01-01
    相关资源
    最近更新 更多