首页 > 解决方案 > 将 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(){...},
  },
}

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

标签: graphqlapollo

解决方案


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

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

module.exports = makeExecutableSchema({
  typeDefs: [typeDefs, userTypeDefs],
  resolvers: merge(resolvers, userResolvers)
});

推荐阅读