在 Apollo Nuxt 中,如何在方法中访问非默认客户端?

Posted

技术标签:

【中文标题】在 Apollo Nuxt 中,如何在方法中访问非默认客户端?【英文标题】:In Apollo Nuxt, how do I access the non-default client in a method? 【发布时间】:2019-12-16 14:34:17 【问题描述】:

我在 Nuxt 应用程序中使用 Apollo。我正在尝试在一种方法中使用我的非默认客户端(Shopify)。理想情况下是这样的:

在我的nuxt.config.js 中,我有这样的 Apollo 设置:

apollo: 
    clientConfigs: 
        default: 
            httpEndpoint:
                "http://example.com",
            tokenName: "apollo-token",
            persisting: false,
            websocketsOnly: false
        ,
        shopify: 
            httpEndpoint:
                "http://example.shopify.com",
            tokenName: "apollo-token"
            ... etc...
        
    

然后在我的组件中,我有这个方法:

methods: 
        createCheckout() 
            this.$apollo.getClient("shopify")
                .mutate(
                    mutation: this.checkoutQuery,
                    variables: 
                        variantId: this.selectedProduct.variantId,
                        quantity: this.selectedProduct.quantity
                    
                )
        

这不起作用,因为getClient() 只返回默认客户端(在本例中为 WordPress)。那么如何在方法中访问其他客户端呢?

【问题讨论】:

【参考方案1】:

想通了!答案是这样的:

methods: 
        createCheckout() 
            this.$apollo.provider.clients.shopify
                .mutate(
                    mutation: this.checkoutQuery,
                    variables: 
                        variantId: this.selectedProduct.variantId,
                        quantity: this.selectedProduct.quantity
                    
                )
        

【讨论】:

以上是关于在 Apollo Nuxt 中,如何在方法中访问非默认客户端?的主要内容,如果未能解决你的问题,请参考以下文章

在 NUXT 中使用 vue-apollo 从 Vuex 商店访问 this.$apollo?

@Nuxt/Apollo 如何从 gql 查询中删除“__typeName”

如何以与@nuxt/apollo subscribeToMore 一起使用的方式设置我的 nuxt

“默认 Apollo 查询”VS “AsyncData”(Nuxt.js)

在 Nuxt.js 中发送每个请求时,如何将对象添加到 apollo 上的数据?

使用 nuxt-apollo 时如何使用 GraphQL 查询?