微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 GraphQLSchema,是否有模块化 GraphQLObjectTypes 的语法?

如何解决使用 GraphQLSchema,是否有模块化 GraphQLObjectTypes 的语法?

如何将 userThat(可能还有其他几个相关字段)重构为其他不错的模块化文件,然后将它们包含到 root_query_type.js 中

这是一个普通的 node/express/graphql GraphQLObjectType 实现。

还是我注定拥有一个巨大的 root_query_type.js ?

schema.js

module.exports = new GraphQLSchema({
  query: RootQueryType
});

root_query_type.js

const RootQueryType = new GraphQLObjectType({
  name: 'RootQueryType',fields: {
    userThis: {
      type: UserType,resolve(parentValue,args,request) {
        return thisResult;
      }
    },userThat: {
      type: UserType,args: {
        thatArgs: { type: new GraphQLNonNull(GraphQLString) },},resolve: (parentValue,arg,request) => {
        return thatResult;
      },

解决方法

我通常这样做:

// user.js

const User = new GraphQLObjectType({ ... });

const queryFields = {
  userThis: {
    type: UserType,resolve(parentValue,args,request) {
      return thisResult;
    }
  },};

const mutationFields = { ... };

module.exports = { User,queryFields,mutationFields };
// RootQueryType.js

// rename queryFields to userQueryFields as we might want to import queryFields
// from many different modules
const { queryFields: userQueryFields } = require('./modules/user.js');

const RootQueryType = new GraphQLObjectType({
  name: 'RootQueryType',fields: {
    ...userQueryFields,},});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。