我应该如何设置删除订阅的架构?
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
}
我创建了一个订阅,其中方法 authorize
和 filter
return true
.
但是我得到这个错误:
Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\User]
deleteUser
变异有效。只有订阅不起作用。我使用 Pusher 进行广播,错误出现在 horizon 仪表板中。
如果你现在真的需要一个解决方案,只需制作一个自定义解析器,你首先广播事件然后删除用户......(你甚至可以制作一个通用化它的自定义指令)。
否则,您将不得不深入研究 Lighthouse 的内部结构以找到解决方案。
现在对您来说可能为时已晚,但可以帮助未来的开发人员寻找解决方案。
我发现您可以使用 Laravel 的模型事件在模型的 'deleting' 事件中触发订阅:https://laravel.com/docs/7.x/eloquent#events 这意味着当订阅从数据库中获取它,不应引发错误。
理想情况下,公认的解决方案可能是最干净的解决方案,但同时也有效。
我试过了
type Mutation {
deleteUser(id: ID!): User @delete @broadcast(subscription: "userDeleted")
}
type Subscription {
userDeleted(id: ID!): User
}
我创建了一个订阅,其中方法 authorize
和 filter
return true
.
但是我得到这个错误:
Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\User]
deleteUser
变异有效。只有订阅不起作用。我使用 Pusher 进行广播,错误出现在 horizon 仪表板中。
如果你现在真的需要一个解决方案,只需制作一个自定义解析器,你首先广播事件然后删除用户......(你甚至可以制作一个通用化它的自定义指令)。
否则,您将不得不深入研究 Lighthouse 的内部结构以找到解决方案。
现在对您来说可能为时已晚,但可以帮助未来的开发人员寻找解决方案。
我发现您可以使用 Laravel 的模型事件在模型的 'deleting' 事件中触发订阅:https://laravel.com/docs/7.x/eloquent#events 这意味着当订阅从数据库中获取它,不应引发错误。
理想情况下,公认的解决方案可能是最干净的解决方案,但同时也有效。