GraphQL 查询必须是字符串

Posted

技术标签:

【中文标题】GraphQL 查询必须是字符串【英文标题】:GraphQL queries must be strings 【发布时间】:2020-01-26 00:50:31 【问题描述】:

我正在 Express 后端编写数据获取服务。它需要从 graphQL 端点获取数据。

我收到以下错误。我知道这是对问题的描述,但我不明白。

'GraphQL queries must be strings. It looks like you\\'re sending the internal graphql-js representation of a parsed query in your request instead of a request in the GraphQL query language. You can convert an AST to a string using the `print` function
from `graphql`, or use a client like `apollo-client` which converts the internal representation to a string for you.' 

这是我正在使用的功能:

fetchMultipleProducts(first : Number, offset : number)
        fetch(
            query: gql`
            query 
                getProduct(query: , first : $first, offset : $offset) 
                    id
                    code
                
                
              `
        )
        .then(res => 
            Logger.info("Fetched data");
            console.log(res);
            return res;
        )
        .catch(err => 
            Logger.error("Failed to fetch", err);
        );   

我正在尝试将变量传递给它,我认为这是允许的?并且使用 Gql 标签是标准的吗?

我们将不胜感激,谢谢大家。

【问题讨论】:

FWIW,你可能应该use variables instead of string interpolation。 【参考方案1】:

我删除了 Gql 标签并按照错误消息中的说明发送了一个字符串。为我的愚蠢道歉。

【讨论】:

以上是关于GraphQL 查询必须是字符串的主要内容,如果未能解决你的问题,请参考以下文章

Graphql:必须提供查询字符串

GraphQL“必须提供查询字符串” graphql-tag react-apollo

Express GraphQL 必须提供查询字符串。

Apollo Server, Graphql - 必须提供查询字符串

GraphQL 文件上传纯 JS “必须提供查询字符串”。

React 和 Nexus Graphql 服务器上的 Apollo 客户端出现“必须提供查询字符串”错误