我现在所处的环境已经有一段时间了。这并不是第一次在项目中使用对象数组进行突变,甚至也不是第一次。然而,在其他类似情况下有效的方法在这个例子中却不起作用。
我依稀记得,有时像对象数组甚至标量这样的“复杂”参数只有在转换为输入类型时才能通过解析。下面的LeaderboardEventType是一个枚举。
type LeaderboardEventScores {
event: LeaderboardEventType!
score: String!
}
type LeaderboardConfigScores {
id: ID!
scores: [LeaderboardEventScores]!
}
input LeaderboardConfigScoresInput {
id: ID!
scores: [LeaderboardEventScores]!
}
虽然上面的类型定义在解析器中工作,但输入定义却完全不同。我一点也不明白为什么不这样做。它们都不适用于定义我的变异参数。为输入添加一个内部!也不起作用。仅仅在输入的主体ID后面加上逗号也不起作用!作为变异参数。但是真正让我恼火的是我不能定义这样的输入。为什么不呢?
我找到了一个解决方案,但该死的是,如果它对我很有意义。如果我做一个像我正在做一个数组作为参数的类型一样的输入,而是做一个输入数组,那么它“有效”。
input LeaderboardEventScoreInput {
event: LeaderboardEventType!
score: String!
}
和突变
modifyLeaderboardConfigScores(
id: ID!
scores: [LeaderboardEventScoreInput]!
): [LeaderboardEventScores]!
因此,显然只有当元素类型是输入时才支持非标量数组。