【发布时间】:2019-08-18 03:06:53
【问题描述】:
在创建 GraphQL 突变或查询时,您通常会检索或保存数据。但是让我们假设我想在保存数据或执行一些额外的副作用时发送电子邮件。
解析器有这种副作用是常见的做法吗?既然解析器应该只根据 SOLID 原则解析数据,对吧?
如果解析器不应该有这样的副作用,那么副作用应该属于哪里?
大多数在线教程和文章,包括 GraphQL 本身的官方教程,似乎都没有涵盖或考虑到这一点。
非常感谢!
【问题讨论】:
标签: graphql
在创建 GraphQL 突变或查询时,您通常会检索或保存数据。但是让我们假设我想在保存数据或执行一些额外的副作用时发送电子邮件。
解析器有这种副作用是常见的做法吗?既然解析器应该只根据 SOLID 原则解析数据,对吧?
如果解析器不应该有这样的副作用,那么副作用应该属于哪里?
大多数在线教程和文章,包括 GraphQL 本身的官方教程,似乎都没有涵盖或考虑到这一点。
非常感谢!
【问题讨论】:
标签: graphql
这取决于解析器正在解析什么类型的字段。
如果它正在解析根突变的字段,它必须涉及副作用,因为突变应该修改服务器端数据。因此,可以在 root mutation field 的解析器中发送电子邮件。
对于对象类型和根查询字段的解析器,因为它应该只是检索数据,如果它们有任何副作用,我会很尴尬。
【讨论】: