紧跟在查询类型(query/mutation)GraphQL之后的字符串的意义

Posted

技术标签:

【中文标题】紧跟在查询类型(query/mutation)GraphQL之后的字符串的意义【英文标题】:The significance of the string immediately after query type (query / mutation) GraphQL 【发布时间】:2016-06-28 08:56:11 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

query 
  user(id: 1) 
    name
  


query 
  user(id: 2) 
    name
  

错误:

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

如果你想了解更多,可以查看the GraphQL spec:

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

【讨论】:

【参考方案2】:

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

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

请注意上面的用户查询没有操作名称。这可以通过以下方式解决。 ​

query allUsers 
  users 
    errors
    success
    users 
      id
      fullName
      mohalla
    
  

【讨论】:

以上是关于紧跟在查询类型(query/mutation)GraphQL之后的字符串的意义的主要内容,如果未能解决你的问题,请参考以下文章

弹性搜索查询在regexp输入参数的列表中查找值的精确匹配

失眠多部分突变

graphql-ruby:Int 不是定义的输入类型(在 $first 上)

Mysql 查询获取日期时间紧跟当前日期时间之后的记录

使用弹性搜索查询查找多个精确值

Angular Apollo GraphQL watchQuery 与订阅