我对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
,然后将它们导入索引或类似的东西。如果我可以做到这一点,那么在很短的时间内发现错误也将变得更加容易。
这可能吗?还是我解释错了?