如何将对象数组添加到阿波罗客户端突变请求中?

时间:2019-10-05 16:29:57

标签: javascript graphql apollo-client

我正在构建使用graphql API的本机脚本移动应用程序,并且正在通过apollo boost使用apollo客户端。

当我尝试发送如下所示的突变内的对象数组时,会出现问题:

let {
    to,
    total,
    drugList
} = order

apolloClient.mutate({
    mutation: gql `mutation {
        makeOrder(
            to: "${to}",
            total: ${total},
            drugList: ${drugList}
        ){
            id
        }
    }`
}).then((res) => {
    console.log(res)
}).catch((error) => {
    console.log(error)
})

我尝试将drugList记录在模板文字中,例如:

console.log(`${drugList}`)

但是我得到了 [object object],[object object] ,然后我尝试使用${[...drugList]}来代替,我得到了所需的对象数组结构,但是apollo的mutate函数客户不接受它(不执行突变或记录错误)。

我想让它运行吗?还是有建议运行它?

1 个答案:

答案 0 :(得分:0)

感谢 Bergi ,他注意到我使用了带有gql标签的模板文字的查询,该查询无法与console.log测试中的简单模板字符串进行比较。

因此,我对此进行了搜索,发现变量属性可以解决问题,因此这是最终结果。

let {
    to,
    total,
    drugList
} = order

apolloClient.mutate({
    mutation: gql `mutation ($to: ID!, $total: Float!, $drugList: [OrderDrugsListInput!]!) {
        makeOrder(
            to: $to,
            total: $total,
            drugList: $drugList
        ){
            id
        }
    }`,
    variables: {
        to: to,
        total: total,
        drugList: drugList
    }
}).then((res) => {
    console.log(res)
}).catch((error) => {
    console.log(error)
})