代码之家  ›  专栏  ›  技术社区  ›  wheresrhys

在与类型定义相同的架构文档中扩展类型是否有效

  •  0
  • wheresrhys  · 技术社区  · 5 年前

    我正在努力寻找清楚这一点的文档:我可以在定义类型的同时扩展同一模式文档中的类型吗?我总是会出现如下错误:

    Error: Cannot extend type "Healthcheck" because it is not defined.
        at assertValidSDL (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/graphql/validation/validate.js:80:11)
        at Object.buildASTSchema (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/graphql/utilities/buildASTSchema.js:69:34)
        at Object.buildSchemaFromTypeDefinitions (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/graphql-tools/dist/generate/buildSchemaFromTypeDefinitions.js:23:28)
        at makeExecutableSchema (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/graphql-tools/dist/makeExecutableSchema.js:26:29)
        at makeAugmentedExecutableSchema (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/neo4j-graphql-js/dist/augment.js:75:49)
        at makeAugmentedSchema (/Users/rhys.evans/Projects/or/biz-ops-api/node_modules/neo4j-graphql-js/dist/index.js:232:53)
        at createSchema (/Users/rhys.evans/Projects/or/biz-ops-api/server/data/graphql-schema.js:36:17)
        at EventEmitter.constructAPI (/Users/rhys.evans/Projects/or/biz-ops-api/server/routes/graphql.js:19:21)
        at emitOne (events.js:121:20)
        at EventEmitter.emit (events.js:211:7)
    

    模式文档:

    directive @deprecated(
      reason: String = "No longer supported"
    ) on FIELD_DEFINITION | ENUM_VALUE | ARGUMENT_DEFINITION
    
    type Healthcheck {
      code: String
    }
    
    type Check {
      name: String
    }
    
    extend type Healthcheck {
      checks: [Check]
    }
    

    猜测 这是不允许的,但是有人能告诉我规范/其他文档在哪里说明这一点吗?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Daniel Rearden    5 年前

    通常,类型扩展 只有 在与类型定义相同的文档中工作。大多数接受多个文档或类型定义的库在使用该文档生成架构之前都会将它们合并到一个文档中。

    从规范的角度来看,类型定义没有什么问题。你看到的是一只虫子 specific to neo4j-graphql-js .

    推荐文章