首页 > 解决方案 > 可以在不同的屏幕中调用相同的 GraphQL 订阅吗?

问题描述

大家好,我在使用 GraphQL 订阅时遇到了一些奇怪的事情。因此,由于使用必须上传的文档类型,我在 3 个不同的屏幕中有以下订阅。

componentWillReceiveProps(nextProps) {
    if (!nextProps.getKYCDocuments.loading) {
      let { subscribeToMore } = this.props.getKYCDocuments;
      subscribeToMore({
        document: KYC_ADDED,
        variables: {
          user: this.props.getMe.me._id
        },
        updateQuery: (prev, { subscriptionData }) => {
          if (!subscriptionData.data) {
            return prev;
          }

          const kycAdded = subscriptionData.data.kycAdded;

          if (
            !prev.getKYCDocumentsForThisUser.find(d => d._id === kycAdded._id)
          ) {
            return {
              ...prev,
              getKYCDocumentsForThisUser: [
                { ...kycAdded },
                ...prev.getKYCDocumentsForThisUser
              ]
            };
          }
          return prev;
        },
        onError: err => console.log(err)
      });
    }
}

这就是我的解析器中的内容

pubsub.publish(KYC_ADDED, { [KYC_ADDED]: KYCToUpdate });

kycAdded: {
    subscribe: withFilter(
      () => pubsub.asyncIterator(KYC_ADDED),
      (payload, args) => {
        return payload.kycAdded.user === args.user;
      }
    )
  },

现在,当我要Kyc Document One筛选时,我正在做一个突变来创建第一个文档。订阅运行良好。我回去然后进入Kyc Document Two屏幕。我正在做同样的事情,但没有订阅响应回来。检查了数据库,我的突变对象在那里。现在我正在刷新应用程序,选择Kyc Document Two屏幕进行突变并且订阅响应在那里。回去然后Kyc Document One筛选进行突变并且没有订阅响应

标签: graphql

解决方案


推荐阅读