首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apollo订阅不起作用

Apollo订阅不起作用
EN

Stack Overflow用户
提问于 2017-07-07 19:50:25
回答 1查看 1.3K关注 0票数 3

我有一个graphql服务器,每当实体的状态更新时,我都会尝试触发一个事件。我有一个用于更新实体的变体,它使用graphql-subscriptions发布更新以供订阅者监听。然而,pubsub.subscribe(EVENT_NAME)接受了更改,但当我将其集成到订阅解析器中时,它不会触发更新。

为简洁起见,我对与问题无关的部分代码进行了编辑。

我的解析器:

代码语言:javascript
复制
Mutation: {
  updateStatus(_, { id, status, hash }) {
    return repository.updateStatus(id, status, hash);
  }
},
Subscription: {
  updatedStatus: {
    subscribe: () => pubsub.asyncIterator('updatedStatus'),
  }
},

我的存储库:

代码语言:javascript
复制
export const updateStatus = async function(id: String, status: String, hash: String) {
  try {
    const res = await fetch(`${baseURL}/article/${id}/status?publish_hash=${hash}`, {
      headers,
      method: 'PATCH',
      body: JSON.stringify({ status })
    });

    const article = await fetchSingleArticle(id, 'XML', headers.channel, false);

    await pubsub.publish('updatedStatus', article);
    return article;
  } catch (e) {
    console.log(e.message);
  }
}

我的方案:

代码语言:javascript
复制
type Mutation {
  updateStatus(id: ID!, status: PublishingStatus = PUBLISHING, hash: String): Article
}

type Subscription {
  updatedStatus(id: ID!): Article
}

schema {
  query: Query
  mutation: Mutation
  subscription: Subscription
}

为了测试这一点,我只使用了graphiql,它可以很好地获得websocket连接。

我尝试过同时使用article (如图所示)和{ updatedStatus: article }进行发布,但似乎两者都没有被采用。

如前所述,pubsub.subscribe('updatedStatus')确实接受了这一变化。因此,这个问题似乎与订阅解析器有关。

我将使用以下文档:http://dev.apollodata.com/tools/graphql-subscriptions/setup.html#setup

EN

回答 1

Stack Overflow用户

发布于 2017-07-07 22:42:46

原来我使用的是一个过时的graphql包!更新到最新版本解决了此问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44970081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档