Vue.js Vue Apollo:如何使用对象作为输入参数查询GraphQL?
我想通过Saleor电子商务平台提供的GraphQLAPI创建一个签出对象 根据gql的说法,有一个变种可以这样做,它将CheckoutCreateInput对象作为它的参数 下面是一个在操场上运行良好的突变示例 以下是我尝试过的当前代码(我在vuex操作中执行此操作) 这是创建购物车的方法: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
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)
}