Я хочу передать объектный массив [{questionId1, value1}, {questionId2, value2}, {questionId3, value3}] динамического размера в GraphQL Mutation с NodeJS
.........
args: {
input: {
type: new GraphQLNonNull(new GraphQLInputObjectType({
name: 'AssessmentStep3Input',
fields: {
questionId:{
name:'Question ID',
type: new GraphQLNonNull(GraphQLID)
},
value:{
name:'Question Value',
type: new GraphQLNonNull(GraphQLBoolean)
}
}
}))
}
},
.........
Как я могу это сделать с помощью данного образца кода?
Спасибо





Если вы хотите передать массив объектов с помощью GraphQL Mutation, вам необходимо использовать «GraphQLList», который позволяет вам передавать массив с динамическим размером заданного ввода.
Вот пример
........
........
args: {
input: {
type: new GraphQLNonNull(GraphQLList(new GraphQLInputObjectType({
name: 'AssessmentStep3Input',
fields: {
questionId:{
name:'Question ID',
type: new GraphQLNonNull(GraphQLID)
},
value:{
name:'Question Value',
type: new GraphQLNonNull(GraphQLBoolean)
}
}
}))
)
}
},
........
........
Надеюсь, поможет.
Спасибо
Я только что опубликовал статья по этому поводу, так что вы можете взглянуть, если хотите узнать более подробную информацию. Это репозиторий с примерами, где реализована мутация createUsers https://github.com/atherosai/express-graphql-demo/blob/feature/5-modifiers/server/graphql/users/userMutations.js. Вы можете посмотреть, как это реализовано, но в целом ответ верен. Вы можете ввести столько объектов, сколько хотите, в массив (если вы не реализовали ограничение на количество элементов, но по умолчанию его нет).
Я просто добавлю, что перед GraphQLList должно быть ключевое слово new, чтобы он заработал, иначе это правильно :)