GraphQL

时间:2019-07-14 06:03:03

标签: javascript node.js graphql resolver

我对GraphQL很陌生。我正在关注一个教程,在那里我学习了有关graphql mutaion和rootquery的这种样式。简而言之,这是我的代码:

server.js

const Schema = require("./graphqlSchema/schema/index");

const Resolvers = require("./graphqlSchema/resolvers/index");

 const server = new ApolloServer({
    schema: Schema,
    rootValue: Resolvers

  });

解析器/索引 index.js

const userResolver = require('./user-resolver');
const bookResolver = require('./book-resolver');

const rootResolver = {
  ...userResolver,
  ...bookResolver
};
module.exports = rootResolver;

用户解析器

module.exports = {

    userGET: async ( args, context) => {
        let result = await dao.getDATA(args.id); //using mysql
        return result[0];
    },
 ///others mutations
}

现在的问题是我只有一个架构,其中写入了所有类型和rootquery

/schema/index.js

const { buildSchema } = require('graphql');

module.exports = buildSchema(`
type User{
    id: Int!
    name: String!
    age: ID!
}
type Book {
    id: Int!
    name: String!
    writer: String!
    genre: String!
}
type RootQuery {
  userGET(id: Int!): User
  BookGET(id: Int!): Book

}
type RootMutation {
    addNewBook()
    addNewUser()

}
schema {
    query: RootQuery
    mutation: RootMutation

}
`);

所以,现在我的问题是,当我将有两个以上,三个或三个以上的解析器时,那么我对每个解析器的类型定义将有所不同,通过仅将它们保留在一个模式中,它将有太多的代码只需一个文件。  但是我想让所有解析器的这些架构保持不同。像,每种类型都有不同的解析器,例如user-resolver, book-resolver,我想要这样的架构,user-scehma, book-schema,然后将它们导入索引或类似的东西。如果我可以做到这一点,那么在很短的时间内发现错误也将变得更加容易。

这可能吗?还是我解释错了?

0 个答案:

没有答案