Apollo v2 订阅 graphql
Posted
技术标签:
【中文标题】Apollo v2 订阅 graphql【英文标题】:Apollo v2 subscriptions 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."
订阅内不能调用函数吗? 如何在订阅调用中调用函数? 感谢您的帮助
【问题讨论】:
【参考方案1】:你需要调用 pubsub.publish(SOME_KEY, 你的变量 ); 通常在突变中执行逻辑。在你的情况下 SOME_KEY = 'ObjectName'
【讨论】:
实际上我已经管理了发布方法并且它工作正常。我的问题与在 event_subscription 中调用某些函数的可能性有关。之前似乎甚至无法使用 console.log 打印一些东西,它让我返回了我报告的错误。所以没有console.log它工作正常,使用console.log它不起作用。你知道它是否存在一种在事件订阅中添加一些逻辑的方法? 如果你在前端使用 react,你可以使用带有选项 onsubscriptiondata 的 useSubscription 钩子并在那里执行逻辑,在后端我认为这是不可能的。以上是关于Apollo v2 订阅 graphql的主要内容,如果未能解决你的问题,请参考以下文章
使用“apollo-server-azure-functions”的 Apollo 订阅