11

我想知道查询类型后面的字符串有什么意义,在这种情况下是“ProvisionQueues”,似乎从字符串中删除它不会影响任何东西——它只是为了记录还是什么。元数据?

mutation ProvisionQueues {
 createQueue(name: "new-queue") {
    url
  }
}
4

2 回答 2

15

该字符串是操作名称。如果您不指定名称,则该操作称为匿名操作。不过,在实际情况下,我总是喜欢指定一个操作名称,因为这样可以更轻松地执行诸如读取堆栈跟踪之类的操作。

似乎从字符串中删除它不会影响任何东西

您只能在执行单个操作时使用匿名操作。例如,以下会导致错误:

query {
  user(id: 1) {
    name
  }
}

query {
  user(id: 2) {
    name
  }
}

错误:

"message": "This anonymous operation must be the only defined operation."

如果您想了解更多信息,可以查看GraphQL 规范

如果文档仅包含一个操作,则该操作可能未命名或以简写形式表示,即省略查询关键字和操作名称。否则,如果 GraphQL 查询文档包含多个操作,则必须为每个操作命名。

于 2016-03-13T17:35:43.127 回答
0

用另一个例子补充@Eric的答案。

query allNotifications {
  notifications {
    success
    errors
    notifications {
      id
      title
      description
      attachment
      createdAt
    }
  }
}    ​
​
query {
  users {
    errors
    success
    users {
      id
      fullName
    }
  }
}

请注意,用户查询没有操作名称。这可以通过以下方式解决。​</p>

query allUsers {
  users {
    errors
    success
    users {
      id
      fullName
      mohalla
    }
  }
}
于 2021-07-05T05:08:08.150 回答