查询类型(查询/突变)GraphQL后立即显示字符串的意义

时间:2016-03-13 09:21:56

标签: graphql graphql-js

我想知道查询类型后面的字符串的重要性,在本例中为“ProvisionQueues”,它似乎从字符串中删除它不会影响任何东西 - 它只是用于记录或其他东西。元数据?

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

2 个答案:

答案 0 :(得分:5)

该字符串是操作名称。如果您没有指定名称,则该操作称为匿名操作。实际上,我喜欢总是指定一个操作名称,因为这样可以更容易地执行读取堆栈跟踪等操作。

  

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

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

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

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

错误:

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

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

  

如果文档只包含一个操作,则该操作可以是未命名的,也可以用速记形式表示,这省略了查询关键字和操作名称。否则,如果GraphQL查询文档包含多个操作,则必须命名每个操作。

答案 1 :(得分:0)

用另一个例子添加到@Eric 的回答中。

viewDidLoad

注意上面的用户查询没有操作名称。这可以解决如下。

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