GraphQL-将枚举值直接传递给突变作为参数吗?

Lel*_*ong 5 enums types graphql

给定以下GraphQL类型定义:

const typeDefs = `
  enum Action {
    update
    delete
  }    

  type Mutation {
    doSomething(action: Action)
  }
`;
Run Code Online (Sandbox Code Playgroud)

该查询有效:

const query = `
  mutation($action: Action) {
    doSomething(action: $action)
  }
`
const variables = { action: "update" }
Run Code Online (Sandbox Code Playgroud)

但这不是:

const query = `
  mutation {
    doSomething(action: "update")
  }
`
Run Code Online (Sandbox Code Playgroud)

GraphQL不支持直接将枚举值作为参数传递吗?

Dan*_*den 10

GraphQL确实支持将枚举直接作为参数传递;但是,您需要省略该值周围的引号以使其起作用:

const query = `
  mutation {
    doSomething(action: update)
  }
`
Run Code Online (Sandbox Code Playgroud)

根据规格

枚举值表示为未加引号的名称(例如MOBILE_WEB)。

因此,与字符串值不同,枚举值不应放在引号内。我们将它们用于变量的唯一原因是遵循正确的JSON格式。

  • 是我一个人的问题,还是使用枚举使通过变量对象传递参数变得困难? (12认同)