Нет, к сожалению, имена аргументов не могут быть переменными в запросе. Соглашение состоит в том, чтобы использовать тип объекта ввода для мутаций, чтобы обойти эту проблему:
type Mutation {
updateClient(id: ID!, input: ClientInput!): Client
}
input ClientInput {
a: String
b: Number
…
}
(вместо updateClient(id: ID!, a: String, b: Number, …)
)
С этим шаблоном вы можете передать объект типа ClientInput
для вашей мутации в качестве аргумента:
query(`mutation($id: ID!, $input: ClientInput!) {
updateClient(id: $id, input: $input) {
id
}
}`, {id: 1, input: {["first_name"]: "John"}})
Я действительно sh имел некоторый синтаксис распространения аргументов в GraphQL, чтобы сделать это вложение ненужным.