我应该如何设置删除订阅的架构?

How should I setup the schema for deletion subscription?

我试过了

type Mutation {
    deleteUser(id: ID!): User @delete @broadcast(subscription: "userDeleted")
}

type Subscription {
    userDeleted(id: ID!): User
}

我创建了一个订阅,其中方法 authorizefilter return true.

但是我得到这个错误:

Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\User]

deleteUser 变异有效。只有订阅不起作用。我使用 Pusher 进行广播,错误出现在 horizo​​n 仪表板中。

如果你现在真的需要一个解决方案,只需制作一个自定义解析器,你首先广播事件然后删除用户......(你甚至可以制作一个通用化它的自定义指令)。

否则,您将不得不深入研究 Lighthouse 的内部结构以找到解决方案。

现在对您来说可能为时已晚,但可以帮助未来的开发人员寻找解决方案。

我发现您可以使用 Laravel 的模型事件在模型的 'deleting' 事件中触发订阅:https://laravel.com/docs/7.x/eloquent#events 这意味着当订阅从数据库中获取它,不应引发错误。

理想情况下,公认的解决方案可能是最干净的解决方案,但同时也有效。