如何在GraphQL查询中传递枚举值



GraphsQL突变会产生以下错误。我已经附上了我的查询和代码。

GraphQLResult<Data>(data: nil, errors: Optional([Validation error of type UnknownType: Unknown type TicketType, Validation error of type FieldUndefined: Field 'addTicket' in type 'Mutation' is undefined @ 'addTicket']), extensions: nil, source: Apollo.GraphQLResult<MyProject.MyMutation.Data>.Source.server, dependentKeys: nil)

查询:

mutation MyMutation($id: String!, $ticketType: TicketType) {
addTicket(input: { id: $id, ticketType: $ticketType}) {
accountId
storyId
}
}

在API.swift内部,这个Enum是从schema.json文件自动生成的。

public enum TicketType: RawRepresentable, Equatable, Hashable, CaseIterable, Apollo.JSONDecodable, Apollo.JSONEncodable {
public typealias RawValue = String
case normal
case firstClass
case secondClass
/// Auto generated constant for unknown enum values
case __unknown(RawValue)
public init?(rawValue: RawValue) {
switch rawValue {
case "NORMAL": self = .normal
case "FIRST_CLASS": self = .firstClass
case "SECOND_CLASS": self = .secondClass
default: self = .__unknown(rawValue)
}
}
public var rawValue: RawValue {
switch self {
case .normal: return "NORMAL"
case .firstClass: return "FIRST_CLASS"
case .secondClass: return "SECOND_CLASS"
case .__unknown(let value): return value
}
}
public static func == (lhs: TicketType, rhs: TicketType) -> Bool {
switch (lhs, rhs) {
case (.normal, .normal): return true
case (.firstClass, .firstClass): return true
case (.secondClass, .secondClass): return true
case (.__unknown(let lhsValue), .__unknown(let rhsValue)): return lhsValue == rhsValue
default: return false
}
}
public static var allCases: [TicketType] {
return [
.normal,
.firstClass,
.secondClass,
]
}
}

在我的代码中,我调用这个方法如下

myNetworkObj.apollo.perform(mutation: addTicket(id: "1234", ticketType: .normal) {
result in ....
}

我不认为你的直接问题是枚举,而是你如何调用突变。

当你在客户端调用突变时,它的参数签名需要与模式匹配:

mutation: addTicket(input{id: "1234", ticketType: .normal})

addTicket的顶级参数是架构中的input

最新更新