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

时间:2019-10-13 10:26:46

标签: laravel graphql graphql-subscriptions laravel-lighthouse

我尝试过

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 进行广播,并且错误显示在水平仪表板中。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

我发现您可以使用Laravel的模型事件在模型的“删除”事件中触发订阅:https://laravel.com/docs/7.x/eloquent#events这意味着当订阅从数据库中获取时,该模型将存在于数据库中,因此不应该。不会出错。

理想情况下,公认的解决方案可能是最干净的方法,但这在此期间有效。