我应该如何将本地服务器与 graphQL 模式结合使用?

How do should I approach a local server in conjunction with graphQL schemas?

(目前没有使用 Apollo)

所以我有 server.js:

let graphqlHTTP = require('express-graphql');
... // (other graphQL setup)
let users = []; // or any DB solution here

const {
    UserType,
    UserFactory
} = require('./schema/typeDef.js');
const { QueryType } = require('./schema/query.js');
... // similar imports
// other server declarations

例如,我有 typeDef.js:

const UserType = new GraphQLObjectType({
    name: 'User',
    fields: {
        id: { type: new GraphQLNonNull(GraphQLInt) },
        username: { type: new GraphQLNonNull(GraphQLString }
    }
});

const UserFactory = function(username, id) {
    return {username: username, id: id};
};

module.exports = { UserType, UserFactory };

问题是,我希望能够将 UserType 添加到 server.js 中的数据库(在此代码示例中,用户数组);但当然,typeDef.js 无法访问 server.js 中声明的数据库。

我最初将文件分开是因为我不想 server.js 被架构代码弄得太臃肿。

我该怎么办?谢谢!

如果你来到圣地却没有答案,我已经为你准备了一个。按照 this link 中的指南进行操作。

本质上,用mongoose创建一个db,导出,然后在不同的文件夹中使用index.js将它们拼接在一起。解析器与类型位于不同的文件夹中,每个都有自己的 index.js.

您现在可以通过要求 db 模块来访问解析器中的 db 方法。请注意,您不需要 babel,而且我发现 cors 会导致问题(因此如果它也给您带来问题,您可能需要删除它)。