0

.gql我为我的查询创建了一个文件,并像这样导入它:

const query = require("@/hello.gql");

但是,如果我将query变量记录到控制台,它会显示一个对象,而不是字符串。我该怎么做才能让我导入的查询只是一个字符串?

4

2 回答 2

3

使用 查询服务器apollo-client时,提供的query参数必须是类型的对象DocumentNode,这是查询的 AST 表示。换句话说,如果您使用apollo-client,您不能只将查询作为字符串传递给它,您必须先对其进行解析。这通常使用graphql-tag库来完成。它可以通过 webpack 使用像graphql-tag's loader 或graphql-loader. 如果您使用这样的加载器,那么.gql您导入的任何文件都会自动DocumentNode为您解析为对象。

如果您使用apollo-client,则无需使用这些加载器。如果您仍想将查询存储在单独的文件中并将它们作为字符串导入,您应该使用不同的加载器,例如raw-loader

于 2020-01-19T15:50:51.533 回答
0

因为,您只是导入查询,而不是使用它。

您可以使用 apollo 像这样使用该查询

const yourQuery= require("@/hello.gql");

data(){
 return {
    queryResponse: []  
  }
}

apollo: {
    queryResponse: {
      prefetch: true,
      query: yourQuery
    }
  }

这样,您将获取查询并将响应保存在 queryResponse

于 2020-01-19T14:19:55.917 回答