首页 > 解决方案 > 在 Neo4j Graphql Apollo 服务器类型定义中如何添加带空格的名称?

问题描述

我的类型定义是这样的

type COMPANY {
    "AIRLINE SEGMENT": String             
    AIRLINE_TYPE: String
}

我收到一条错误消息

apollo server GraphQLError: Syntax Error: Expected Name, found :

如果我删除空格和引号,那么我不会收到错误消息。我到处搜索,但我没有办法在其中添加带有空格的名称。

任何帮助将不胜感激。谢谢。

标签: neo4jgraphqlapollo-serverexpress-graphqlgrandstack

解决方案


GraphQL 不支持名称中的空格。根据规范,名称必须匹配以下正则表达式:

/[_A-Za-z][_0-9A-Za-z]*/

GraphQL 实际上会忽略文档中的所有空白,字符串和注释中的空白除外:

空格用于提高源文本的易读性并充当标记之间的分隔符,并且任何数量的空格都可以出现在任何标记之前或之后。标记之间的空格对于 GraphQL 文档的语义意义并不重要,但是空格字符可能出现在字符串或注释标记中。

您可能首先不应该在节点名称中使用空格,即使它们在技术上得到支持。这是推荐的命名约定

驼峰式,以大写字符开头

如果您的数据源返回的对象的字段名称包含空格,您可以在解析器映射中将这些字段转换为“合法”字段名称。例如,给定一个名为 的类型Company,其字段名为airlineSegment

const resolvers = {
  Company: {
    airlineSegment: company => company['AIRLINE SEGMENT']
  }
}

推荐阅读