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

时间:2019-03-14 03:46:19

标签: graphql graphql-js express-graphql

(当前未使用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中的数据库(在此代码示例中为users数组);但是,当然,typeDef.js无法访问server.js中声明的数据库。

我最初是分开文件的,因为我不想让server.js过多使用架构代码。

我应该怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您没有答案来到圣地,我会为您准备的。请遵循this link中的指南。

基本上,用猫鼬创建一个数据库,将其导出,并在不同文件夹中使用index.js将它们缝合在一起。解析器将位于与类型不同的文件夹中,每个文件夹都具有自己的index.js。

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