graphql - 可以在不同的屏幕中调用相同的 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
筛选进行突变并且没有订阅响应
解决方案
推荐阅读
- c# - Microsoft.Data.SQLite:找不到库 e_sqlite3
- c# - 在任务之间划分for循环
- android-studio - “不支持键“target-densitydpi”。在 webVIew 中加载 url
- reactjs - 无法编译 react.js 代码。在第 7 行出现错误
- hibernate - 如何使用 Configuration.addCacheableFile 进行休眠配置
- django - 如何在 django 中插入不同的电子邮件 mysql
- swift - PerfectTemplate 在 Relase 模式下得到“致命错误:UnsafeMutablePointer.initialize 重叠范围”
- c# - 从 Grades.txt 文件中读取成绩并将最佳成绩保存到 BestGrades.txt
- javascript - 在firebase数据库中添加数据后,我的html表没有实时更新
- java - perm gen 是堆的一部分吗?