我尝试过
type Mutation {
deleteUser(id: ID!): User @delete @broadcast(subscription: "userDeleted")
}
type Subscription {
userDeleted(id: ID!): User
}
我创建了一个预订,其中方法authorize
和filter
返回true
。
但是我得到这个错误:
Illuminate \ Database \ Eloquent \ ModelNotFoundException:没有模型[App \ User]的查询结果
deleteUser
突变有效。仅订阅无效。我使用 Pusher 进行广播,并且错误显示在水平仪表板中。
答案 0 :(得分:1)
如果您现在真的需要解决方案,只需制作一个自定义解析器,您可以在其中首先广播事件,然后删除用户...(甚至可以创建一个将其推广的自定义指令)。
否则,您将不得不深入研究Lighthouse的内部结构以找到解决方案。
答案 1 :(得分:0)
现在对您来说可能为时已晚,但可以帮助将来的开发人员寻找解决方案。
我发现您可以使用Laravel的模型事件在模型的“删除”事件中触发订阅:https://laravel.com/docs/7.x/eloquent#events这意味着当订阅从数据库中获取时,该模型将存在于数据库中,因此不应该。不会出错。
理想情况下,公认的解决方案可能是最干净的方法,但这在此期间有效。