gpt4 book ai didi

graphql - 如何根据某个对象的 id 过滤订阅事件?

转载 作者:行者123 更新时间:2023-12-02 02:06:16 36 4
gpt4 key购买 nike

我希望能够根据对象 ID 过滤某些操作的订阅。例如我想做这样的事情:

subscription{
onTaskCompleted(taskId: "1"){
taskCompleted{
status
items{
reason
iD
}
}
taskFailed{
status
details{
detail
status
}
}
}
}

仅当 ID 为“1”的任务完成时才会发出事件。

是否有内置的方法可以使用某种类型的过滤来使用 HotChocolate 来执行此操作?

我是否必须自己添加这种类型的过滤,通过在解析器中执行类似的操作:

if(_taskIds.Contains(taskId))
{
TaskCompletedExecution taskFinished = new TaskCompletedExecution(taskCompleted);
await eventSender.SendAsync(nameof(TaskListSubscriptions.OnTaskCompleted), taskFinished,
cancellationToken);
}

谢谢

最佳答案

你可以这样做:

        [SubscribeAndResolve]
public async IAsyncEnumerable<TaskCompletedExecution> OnTaskCompletedAsync(
string taskId,
[Service] ITopicEventReceiver eventReceiver,
CancellationToken cancellationToken)
{
var stream = await eventReceiver.SubscribeAsync<string, TaskCompletedExecution>(
$"on-task-completed-{taskId}", cancellationToken);

await foreach (var data in stream.ReadEventsAsync().WithCancellation(cancellationToken))
{
yield return data;
}
}

要触发它,您可以将其发布到 on-task-completed-123,然后该信息才会发送给提供 123 作为任务 ID 的订阅者。

关于graphql - 如何根据某个对象的 id 过滤订阅事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68414215/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com