我应该如何将本地服务器与 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 会导致问题(因此如果它也给您带来问题,您可能需要删除它)。
(目前没有使用 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 会导致问题(因此如果它也给您带来问题,您可能需要删除它)。