graphql - 允许订阅返回实体的初始数据
问题描述
我需要订阅来返回请求类型的初始状态。
我的应用程序中有任务系统,一个任务可能有多个状态:CREATED
, QUEUED
, RUNNING
, COMPLETED
,CANCELLED
等CANCELLING
。创建任务时,它具有CREATED
状态,然后根据其类型经历多个状态,直到它是COMPLETED
.
有一个订阅taskUpdated(id: ID!): Task
可以做到它所说的。这是一个订阅解析器:
taskUpdated: {
subscribe: async (...args) => {
try {
// get initial task state
const initialTaskData = await resolveTask(args[1].input);
const cb = withFilter(
(_, { input }) => {
const iterator = tasksPubsub.asyncIterator(TASK_UPDATED);
// Set initial task state in the iterator?
return iterator;
},
(payload, variables) => {
return payload.id === variables.input.id;
},
);
return cb.apply(null, args);
} catch (e) {
// handle error
debugger;
}
},
},
如何在迭代器中设置初始任务状态?有人建议围绕迭代器创建一个包装器,这样就可以完成工作,但我不知道从哪里开始,这似乎是一种矫枉过正。这个问题有什么简单的解决方案吗?
PS。由于前端限制,在我的情况下,先阅读然后再进行更新不是一个选项query
。subscription
解决方案
推荐阅读
- uwp - Windows iot core 发送数据到远程服务器 52.139.250.253 费用网络
- javascript - 如何从谷歌表格中获取数据作为字典数组
- sql-server - 无法在 Raspbian 10(Buster)上为 SQL Server 获取 ODBC 驱动程序 17
- c++ - 断点不会命中 CLion
- php - Codeigniter:如何在重定向中传递搜索词
- wordpress - 是否有任何用于问题和多个答案的插件或页面构建器(用于手动输入)
- c++ - C++ Stream 类打开文件失败
- python-3.x - 在单个文档中翻译多种语言的问题
- java - 如何将日期从 (ddmmyyyy HH:mm:ss) 转换为 (yyyy-MM-dd HH:mm:ss.SSS)?)
- excel - 计算每小时奖金