0

我试过了

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

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

我创建了一个订阅,其中方法authorizefilter返回true

但我得到这个错误:

Illuminate\Database\Eloquent\ModelNotFoundException: 没有模型 [App\User] 的查询结果

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

4

2 回答 2

1

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

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

于 2019-12-03T13:10:37.987 回答
0

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

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

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

于 2020-08-30T06:26:24.173 回答