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

Posted

技术标签:

【中文标题】使用 nuxt-apollo 时如何使用 GraphQL 查询?【英文标题】:How to use GraphQL queries while using nuxt-apollo? 【发布时间】:2021-04-19 01:30:12 【问题描述】:

我正在尝试从Django 端点查询数据,该端点使用Graphene Django 列出了我的所有articles。我遵循了所有文档,但无法理解如何在 vuex 操作中获取数据。

当使用GraphiQl 时,我可以获得数据答案。我已经安排了我的nuxt.config.js

apollo: 
    tokenName: "nuxt-apollo", // specify token name
    cookieAttributes: 
      expires: 7 // optional, default: 7 (days)
    ,
    defaultOptions: 
      $query: 
        fetchPolicy: "network-only",
        errorPolicy: "all"
      
    ,
    watchLoading: "@/apollo/loadingHandler.js",
    errorHandler: "@/apollo/errorHandler.js",
    clientConfigs: 
      default: 
        httpEndpoint: 'http://localhost:8000/api/articles/graphql/'
      
    
  ,

现在在我的vuex store,但我不知道如何查询和使用数据,我尝试如下查询但没有成功:

async fetchArticles( commit ) 
    try 
      const response =  this.$axios.$get(
        'articles/graphql/',
        
          query: query(
            query: gql`
              query Articles 
                allArticles 
                  id
                  title
                
              
            ` 
          ) 
        
      )
        
     catch (error) 
      commit('setError', error)
    
  ,

你能帮我解决我的问题吗? 谢谢

【问题讨论】:

【参考方案1】:

您可以简单地安装 graphql-tag 库来创建通过 Apollo 客户端发送的查询。

您也可以创建名为 article.graphql 的文件:

query Articles 
    allArticles 
      id
      title
    
 

也像这样传递参数来查询:

query ($param: [String]) 
   //your query

以及店内使用情况:

import articleQuery from './queries/article.graphql';
....
// some store action
async fetchArticles( commit ) 
    const client = this.app.apolloProvider.clients.default;

    // Optional Param   
    // const param = format(new Date(), 'yyyy-MM-dd');

    const queryResult = 
       await client.query(
          query: articleQuery,
          // Optional (if query contain parameter you can use)
          // variables:  param 
        );

【讨论】:

以上是关于使用 nuxt-apollo 时如何使用 GraphQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在互操作期间阻止 MS Graph 组件弹出?

常见排序算法-----希尔排序

如何使用 GatsbyJS 和 GraphQL 查询和显示包含多个图像的文件夹

如何在graphene-django中使用别名

如何在不同颜色的ios中使用uibezierpath创建堆叠条形图

如何创建基本客户端以通过 websockets 使用 GraphQL 订阅