我想知道查询类型后面的字符串的重要性,在本例中为“ProvisionQueues”,它似乎从字符串中删除它不会影响任何东西 - 它只是用于记录或其他东西。元数据?
mutation ProvisionQueues {
createQueue(name: "new-queue") {
url
}
}
答案 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
}
}
}