处理对象数组时如何构造GraphQL突变

时间:2018-08-03 23:31:47

标签: javascript graphql apollo

我正在使用Apollo Client并尝试构建一个提交对象的突变,该对象的一部分是子类型的数组,该数组的大小需要动态变化,但是我找不到任何有关如何正确构建此对象的文档。

这是我的突变,带有手动类型的数组,可以正常工作。

const SET_TEMPLATE = gql`
mutation setTemplate( 
    $id: String,
    $name: String, 
    ) {
    setTemplate(
        id: $id
        input: {
            name: $name
        }
        data: [
            {
                name: "Branded"
                format: "String"
                canExpand: false
                data: {}
            },
            {
                name: "Assigned User"
                format: "String"
                canExpand: false
                data: {}
            },
            {
                name: "Assigned Users"
                format: "String"
                canExpand: false
                data: {}
            }
        ]) {
        name
        author
        data {
            name
            format
            data
        }
    }
}
`

以下是我想要实现的目标。

const SET_TEMPLATE = gql`
mutation setTemplate( 
    $id: String,
    $name: String, 
    $data: FieldInput 
    ) {
    setTemplate(
        id: $id
        input: {
            name: $name
        }
        data: [
            $data
        ]) {
        name
        author
        data {
            name
            format
            data
        }
    }
}
`

我应该关注这样的事情,还是有更简单的方法? Dynamic mutation document for react-apollo

1 个答案:

答案 0 :(得分:1)

这是可能的, 您在突变变量脱节中仅存在一个小问题。
将其声明为$data: FieldInput而不是$data: [FieldInput]
您将要实现的查询结果如下所示:

const SET_TEMPLATE = gql`
mutation setTemplate( 
    $id: String,
    $name: String, 
    $data: [FieldInput]
    ) {
    setTemplate(
        id: $id
        input: {
            name: $name
        }
        data: $data) {
        name
        author
        data {
            name
            format
            data
        }
    }
}
`