首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GraphQL突变和查询拆分为多个模式文件

问将GraphQL突变和查询拆分为多个模式文件
EN

Stack Overflow用户
提问于 2021-12-16 06:50:51
回答 1查看 428关注 0票数 1

我在后端使用Spring和Netflix的DGS库进行GraphQL。我们的应用程序有多个模块(多级项目),每个模块负责一件事。因此,我想根据该模块的业务逻辑将GQL模式拆分为多个文件(假设我们有一些包,比如cars, people, animals和父模块app,其中包含主SpringBootApp类),所以我只想对路径上的一个特定包进行突变和查询,而不是其他包。(我不想看到cars在animal包中发生突变)

问题是我不能在项目中有多个Mutation类型的定义,所以我尝试放置extend type Mutation,但是当我运行我的测试时,它失败了,因为他们不知道父模式,因为唯一的cars模式是复制的,而不是父模式。

我还尝试创建一些Gradle任务,该任务将复制模式并从文件中删除extend关键字,这是可行的,但这不是最好的解决方案。

另一种选择可能是为UseMutation、CarMutation等突变创建一种新类型,但不确定这是否是正确的方法。

您还有其他的想法吗?如何工作和处理这种模式分离?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-12-27 00:04:42

您想要做的可能是有一个名为schema的文件夹,您的所有模式定义都在其中。

您可能有,例如在car.js中

代码语言:javascript
复制
extend type Mutation{
 someRandomMutation : String !
}

extend type Query{
 someRandomQuery : Int!
}

然后,在您的index.js中,您必须首先为扩展它们的所有这些部分定义Mutation和Query类型:

代码语言:javascript
复制
import car from './car'
   import people from './people'

    const linkSchema=gql`
        scalar Date    
        scalar Upload
        
        type Query{
            _:Boolean
        }
    
        type Mutation{
            _:Boolean
        }
    
        type Subscription{
            _:Boolean
        }
    `
    export default [car , people , linkSchema]

然后,在服务器的index.js (或任何初始化阿波罗服务器的地方):

代码语言:javascript
复制
import typeDefs from './schema'

const schema = makeExecutableSchema({ typeDefs, resolvers });

  const server = new ApolloServer({
    schema,
    ....
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70374943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档