Apollo 中的 GraphQL 模式存在问题

Posted

技术标签:

【中文标题】Apollo 中的 GraphQL 模式存在问题【英文标题】:Having issues with a GraphQL schema in Apollo 【发布时间】:2019-12-28 23:37:10 【问题描述】:

我正在使用 Apollo 2 构建 Express 服务器。我有以下架构:

const typeDefs = gql `     
    type Movie 
      id: ID!
      title: String
      year: String
      rating: String      
    

    type Query 
      movies: [Movie]
    
  `;

当我运行应用程序时,我收到此错误:

GraphQLError: Syntax Error: Expected Name, found !

这是我正在使用的软件包列表(不相关的软件包已删除):

"apollo-server-express": "^2.8.2", "body-parser": "^1.19.0", "express": "^4.17.1", "graphql": "^14.4.2", "graphql-tools": "^4.0.5",

我已经使用版本 1 完成了此操作,没有任何问题。我错过了一个包裹吗?我错过的语法是否有错字或更改?我已经看了几个小时了,无法弄清楚问题出在哪里。

谢谢, 詹姆斯

【问题讨论】:

我认为你所做的是将它推下树并在顶部留下一个空隙。服务器很困惑,因为类型应该在第一个括号之前。 【参考方案1】:

没有必要用一对花括号来包裹您的文档。它应该只是

const typeDefs = gql`     
  type Movie 
    id: ID!
    title: String
    year: String
    rating: String      
  

  type Query 
    movies: [Movie]
  
`

使用 SDL 时,大括号仅在指定字段列表或枚举值时使用。

【讨论】:

谢谢,就是这样!

以上是关于Apollo 中的 GraphQL 模式存在问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apollo Server 2.0 GraphQL 将模式指令中的信息作为返回的数据包含在内?

如何在 GraphQL 和 Apollo 中部分模拟模式?

我们如何从 apollo-server 模块传递 ApolloServer 中的数据源和合并的 graphql 模式和解析器?

(Apollo) GraphQL 合并模式

Apollo Server v2 - 未调用 GraphQL 解析器

Apollo GraphQL:用于查询返回不同类型对象的模式?