【问题标题】:How to split my .graphqls file into multiple files?如何将我的 .graphqls 文件拆分为多个文件?
【发布时间】:2020-08-09 00:24:38
【问题描述】:

我搜索了很多关于我的问题的答案,但没有人回答我真正想要的。我正在学习 graphql,我使用这个依赖项用 Spring boot 做了一个小项目

<dependency>
        <groupId>com.graphql-java</groupId>
        <artifactId>graphql-spring-boot-starter</artifactId>
        <version>5.0.2</version>
</dependency>
<dependency>
        <groupId>com.graphql-java</groupId>
        <artifactId>graphql-java-tools</artifactId>
        <version>5.2.4</version>
</dependency>

到目前为止,一切正常,但我的 .graphqls 文件增长很快,我认为随着我的应用程序的进展,它将无法读取:

type User {
id: ID!,
firstName: String,
lastName: String,
email: String,
posts: [Post]
}

type Post {
id: ID!,
description: String,
user: User
}

type Query {
users:[User]
user(id: ID):User
posts:[Post]
}

type Mutation {
createUser(user: UserInput):User
}

input UserInput {
firstName: String!,
lastName: String!,
 email: String!
}

我的问题是如何将此文件拆分为多个文件(例如:1 个文件声明用户类型、用户查询和突变,另一个文件声明帖子,带有查询和突变)。 我尝试拆分此文件,但始终只有一种类型有效,另一种则引发错误。

【问题讨论】:

    标签: spring-boot graphql


    【解决方案1】:

    每个架构只能有一种类型的特定名称。但是在使用 SDL 时,您可以使用 type extension 语法添加到现有类型:

    type Query {
      users: [User!]!
      user(id: ID): User
    }
    
    extend type Query {
      posts: [Post!]!
    }
    

    【讨论】:

    • 感谢您的回答,扩展适用于查询类型。但是我可以在不同的文件中声明User 类型和Post 类型吗? javascript中是否有像export这样的关键字来访问另一个文件的类型。对于我刚接触 graphql 的愚蠢问题,我深表歉意。
    • 您的类型定义将被连接到一个文档中,因此无需“导入”类型。您可以在一个文件中定义它,然后在另一个文件中引用它。
    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    相关资源
    最近更新 更多