【问题标题】:GraphQL mutation that accepts an array of dynamic size in one request as input with NodeJsGraphQL 突变,在一个请求中接受动态大小的数组作为 NodeJs 的输入
【发布时间】:2019-02-07 12:32:44
【问题描述】:

我想使用 NodeJS 在 GraphQL Mutation 中传递一个动态大小的 [{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)
                    }
                }
            }))
        }
    },
.........

如何使用给定的代码示例来做到这一点?

谢谢

【问题讨论】:

    标签: node.js graphql graphql-mutation


    【解决方案1】:

    如果您想通过 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)
                        }
                    }
                }))
                )
            }
        },
    ........
    ........
    

    希望对你有帮助。

    谢谢

    【讨论】:

    • 我只是补充一点,在 GraphQLList 之前应该有“new”关键字才能让它工作,否则它是正确的:)
    【解决方案2】:

    我刚刚在上面发布了article,如果您想了解更多详细信息,可以查看一下。这是包含示例的存储库,其中实现了 createUsers 突变https://github.com/atherosai/express-graphql-demo/blob/feature/5-modifiers/server/graphql/users/userMutations.js。你可以看看它是如何实现的,但总的来说上面的答案是正确的。您可以在数组中输入任意数量的对象(如果您没有实现某些项目数量限制,但默认情况下不存在)。

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 2019-11-04
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2017-10-28
      • 2020-05-13
      • 2022-08-13
      相关资源
      最近更新 更多