Graphql 查询可以用于数据写入吗?

Graphql 查询可以用于数据写入吗?,graphql,Graphql,对于我的GraphQL应用程序,我想保存某些已解析字段的日志。因为用户可以自己查看这些日志,所以是否应该将其视为变异而不是查询的一部分 由于它不是应用程序的焦点,我认为使用变异是过激的,但我不确定用这种方式建模是否会遇到一些副作用 我读过的其他问题并没有真正回答这个问题,如果这看起来像是重复的话,那么很抱歉。从概念上讲,Graphql查询和突变做的是相同的事情,但在执行解析器的方式上有所不同 有关以下查询: { user { name } posts { title

对于我的GraphQL应用程序,我想保存某些已解析字段的日志。因为用户可以自己查看这些日志,所以是否应该将其视为变异而不是查询的一部分

由于它不是应用程序的焦点,我认为使用变异是过激的,但我不确定用这种方式建模是否会遇到一些副作用


我读过的其他问题并没有真正回答这个问题,如果这看起来像是重复的话,那么很抱歉。

从概念上讲,Graphql查询和突变做的是相同的事情,但在执行解析器的方式上有所不同

有关以下查询:

{
  user {
    name
  }
  posts {
    title
  }
}
GraphQL实现可以按照其认为最佳的顺序自由执行字段条目

对于以下突变:

{
  createUser(name: $String) {
    id
  }
  addPost(title: $String) {
    id
  }
}
GraphQL实现将按顺序执行每个变异


从这一点来看,突变关键字只是说“嘿,这是要编辑或创建一些东西”的一点语法。我认为在您的情况下,执行查询并将事件存储在审计日志中是一个更好的决定。公开查询存储审核日志这一事实是一个特定于实现的细节&客户端不应该知道这一点

从概念上讲,Graphql查询和突变做的是相同的事情,但在执行解析器的方式上有所不同

有关以下查询:

{
  user {
    name
  }
  posts {
    title
  }
}
GraphQL实现可以按照其认为最佳的顺序自由执行字段条目

对于以下突变:

{
  createUser(name: $String) {
    id
  }
  addPost(title: $String) {
    id
  }
}
GraphQL实现将按顺序执行每个变异


从这一点来看,突变关键字只是说“嘿,这是要编辑或创建一些东西”的一点语法。我认为在您的情况下,执行查询并将事件存储在审计日志中是一个更好的决定。公开查询存储审核日志这一事实是一个特定于实现的细节&客户端不应该知道这一点

这是有道理的。突变更多的是针对客户端数据创建/编辑内容。那么,像日志记录和保存这样的副作用应该没问题。谢谢!虽然这两个操作之间的差异主要是概念上的,但实际上它们在执行方式上存在差异。变异根类型的字段将按顺序解析,而任何其他类型的字段(包括查询根类型)将并行解析。如果您在一个操作中有多个变异字段,这将确保执行顺序。@DanielRearden嘿,谢谢您的输入,您有对它的引用吗?我会更新我的answer@DanStarns请参阅规范和。这很有意义。突变更多的是针对客户端数据创建/编辑内容。那么,像日志记录和保存这样的副作用应该没问题。谢谢!虽然这两个操作之间的差异主要是概念上的,但实际上它们在执行方式上存在差异。变异根类型的字段将按顺序解析,而任何其他类型的字段(包括查询根类型)将并行解析。如果您在一个操作中有多个变异字段,这将确保执行顺序。@DanielRearden嘿,谢谢您的输入,您有对它的引用吗?我会更新我的answer@DanStarns请参阅规范和。