Vue.js Vue Apollo:如何使用对象作为输入参数查询GraphQL?

Vue.js Vue Apollo:如何使用对象作为输入参数查询GraphQL?,vue.js,graphql,vue-apollo,saleor,Vue.js,Graphql,Vue Apollo,Saleor,我想通过Saleor电子商务平台提供的GraphQLAPI创建一个签出对象 根据gql的说法,有一个变种可以这样做,它将CheckoutCreateInput对象作为它的参数 下面是一个在操场上运行良好的突变示例 以下是我尝试过的当前代码(我在vuex操作中执行此操作) 这是创建购物车的方法: import gql from 'graphql-tag' export const CREATE_CART_MUTATION = gql` mutation($checkoutInput: Ch

我想通过Saleor电子商务平台提供的GraphQLAPI创建一个签出对象

根据gql的说法,有一个变种可以这样做,它将CheckoutCreateInput对象作为它的参数

下面是一个在操场上运行良好的突变示例

以下是我尝试过的当前代码(我在vuex操作中执行此操作)

这是创建购物车的方法:

import gql from 'graphql-tag'

export const CREATE_CART_MUTATION = gql`
  mutation($checkoutInput: CheckoutCreateInput!) {
    checkoutCreate(input: $checkoutInput) {
      checkout {
        id
        created
        lastChange
        lines {
          id
          variant {
            id
            name
          }
          quantity
          totalPrice {
            gross {
              localized
            }
            net {
              localized
            }
          }
        }
        totalPrice {
          gross {
            localized
          }
          net {
            localized
          }
        }
      }
    }
  }
`
在服务器上,这会返回以下错误:

graphql.error.base.graphqleror:变量“$checkoutInput”得到无效值{“email”:test@test.com“,”行:{“数量”:10,“变量”:“UHJvZHVjdFZhcmlhbnQ6NQ==”}}。
在字段“行”中:在元素#0中:应为“CheckoutLineInput”,未找到对象。

看起来我大部分时间都在那里,我只是传递了一个lines对象,而不是它们的数组。正确的代码如下:

try {
  this.app.apolloProvider.defaultClient
    .mutate({
      mutation: CREATE_CART_MUTATION,
      variables: {
        checkoutInput: {
          lines: [
            { quantity: cartItem.quantity, variantId: cartItem.variantId }
          ],
          email: 'test@test.com'
        }
      }
    })
    .then(({ data }) => {
      console.log('mutation done!')
      commit('SET_CHECKOUT_OBJECT', data.checkoutCreate.checkout)
    })
} catch (e) {
  console.log('error:')
  console.log(e)
}
try {
  this.app.apolloProvider.defaultClient
    .mutate({
      mutation: CREATE_CART_MUTATION,
      variables: {
        checkoutInput: {
          lines: [
            { quantity: cartItem.quantity, variantId: cartItem.variantId }
          ],
          email: 'test@test.com'
        }
      }
    })
    .then(({ data }) => {
      console.log('mutation done!')
      commit('SET_CHECKOUT_OBJECT', data.checkoutCreate.checkout)
    })
} catch (e) {
  console.log('error:')
  console.log(e)
}