在一个请求中接受动态大小数组作为 NodeJs 输入的 GraphQL 突变

GraphQL mutation that accepts an array of dynamic size in one request as input with NodeJs

我想在 GraphQL Mutation with NodeJS 中传递动态大小的 [{questionId1,value1},{questionId2,value2},{questionId3,value3}] 的对象数组

.........
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)
                    }
                }
            }))
            )
        }
    },
........
........

希望对您有所帮助。

谢谢

我刚刚发布了 article on that, so that you can take a look if you would like to know more detail. This is the repository with the examples, where the createUsers mutation is implemented https://github.com/atherosai/express-graphql-demo/blob/feature/5-modifiers/server/graphql/users/userMutations.js。你可以看看它是如何实现的,但总的来说上面的答案是正确的。您可以在数组中输入任意数量的对象(如果您没有实施一些项目限制,但默认情况下不存在)。