(目前未使用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中的DB(在此代码示例中为users数组);但是,当然,typeDef.js无法访问server.js中声明的DB。
我最初将文件分开,因为我不希望server.js过于膨胀模式代码。
我该怎么办呢?谢谢!
如果你没有回答来到神圣的土地,我会为你准备一个。按照this link中的指南进行操作。
基本上,使用mongoose创建一个db,导出它,并在不同的文件夹中使用index.js将它们拼接在一起。解析器将位于与类型不同的文件夹中,每个文件夹都有自己的index.js。
您现在可以通过让它需要db模块来访问解析器中的db方法。请注意,你不需要babel,而且我发现cors会导致问题(所以你可能想要删除它,如果它也导致你的问题)。