首页 > 解决方案 > 将 graphql 查询与订阅相结合

问题描述

我正在使用 graphql 订阅来获取实时消息流。我的问题是如何将它与查询结合起来,因为有来自过去的消息。

我的示例是我有一个MessagesQuery组件可以获取所有以前的消息,但是为了显示较新的消息,我使用了一个MessageSubscription组件。

谁能解释一下最好的方法?我发现了这个GitHub 问题,但不幸的是没有反馈。给定的。

标签: javascriptgraphql

解决方案


该问题描述了典型的方法——使用Query组件或useQuery钩子并调用subscribeToMore来附加订阅。该用户的问题似乎是订阅在卸载时取消订阅,但这是适当且预期的行为。

示例用法:

const { subscribeToMore, ...result } = useQuery(MESSAGES_QUERY, otherOptions)
subscribeToMore({
  document: MESSAGES_SUBSCRIPTION,
  updateQuery: (prev, { subscriptionData }) => {
    // merge the subscription data into the query result
  },
})

有关其他详细信息,请参阅文档


推荐阅读