创建GraphQL突变或查询时,通常会检索或保存数据。但是,让我们假设我想在保存数据时发送电子邮件或执行一些其他副作用。
解析器是否会出现此类副作用是常见的做法?由于解析器仅应根据SOLID原理解析数据,对吧?
如果事实证明解析器不应该具有此类副作用,那么副作用将属于何处?
大多数在线教程和文章,包括GraphQL本身的官方教程,似乎都没有涵盖或考虑到这一点。
非常感谢!
答案 0 :(得分:1)
这取决于解析器正在解析哪种类型的字段。
如果要解决根突变的字段,则它必须具有副作用,因为突变应该修改服务器端数据。因此,可以在根突变字段的解析器中发送电子邮件。
对于对象类型和根查询字段的解析器,由于它只能检索数据,因此如果它们有任何副作用,这对我来说很尴尬。