Mih*_*ail 6 graphql apollo-server graphql-subscriptions
我需要订阅来返回所请求类型的初始状态。
我的应用程序中有任务系统,一个任务可能有多个状态: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;
}
},
},
Run Code Online (Sandbox Code Playgroud)
如何在迭代器中设置初始任务状态?有人建议围绕迭代器创建一个包装器,这样就可以完成工作,但我不知道从哪里开始,这似乎有点矫枉过正。对于这个问题有什么简单的解决方案吗?
附言。由于前端限制,在我的情况下,先进行读取,然后进行更新不是一个选项query
。subscription
归档时间: |
|
查看次数: |
172 次 |
最近记录: |