将 graphql 解析器文件拆分为单独的文件

5 apollo graphql

我正在使用 GraphQL 并且有一个如下所示的resolvers.js文件:

const User = require("../models/User");
const Post = require("../models/Post");

module.exports = {
  Query: {
    async users(){...},
    async user(){...},
    async posts(){...},
    async post(){...},
  },
  User: {...},
  Post: {...},
  Mutation: {
    createUser(){...},
    login(){...},
    createPost(){...},
  },
}
Run Code Online (Sandbox Code Playgroud)

但是如果我有更多的模型、查询和突变,文件会很长。如何将其拆分为单独的文件?一种用于用户查询和突变,一种用于帖子等。或者那是不可能的?也许有一种方法可以将它与schema.js文件结合起来?这样我也可以拆分架构并将架构/解析器从 User 放入一个文件中。我仍然是编码的初学者。

小智 5

我找到了一种方法,实际上很容易做到。在 schema.js 中,我可以使用 lodash merge 来组合多个解析器文件,而对于 typedef,我只使用一个数组。这样我就可以将所有内容拆分为单独的文件。

const { merge } = require("lodash");

module.exports = makeExecutableSchema({
  typeDefs: [typeDefs, userTypeDefs],
  resolvers: merge(resolvers, userResolvers)
});
Run Code Online (Sandbox Code Playgroud)