Как мне обращаться к локальному серверу в сочетании со схемами 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; но, конечно, typeDef.js не имеет доступа к объявленной БД в server.js.

Сначала я разделил файлы, потому что не хотел, чтобы server.js был слишком раздут кодом схемы.

Как мне это сделать? Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
16
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы пришли на священную землю без ответа, у меня есть один для вас. Следуйте инструкциям в эта ссылка.

По сути, создайте базу данных с мангустом, экспортируйте ее и используйте index.js в разных папках, чтобы сшить их вместе. Резолверы будут находиться в другой папке, чем типы, каждый со своим собственным index.js.

Теперь вы можете получить доступ к методам db в преобразователях, если для этого требуется модуль db. Обратите внимание, что вам не нужен babel, и я обнаружил, что cors вызывает проблемы (поэтому вы можете удалить его, если он тоже вызывает у вас проблемы).

Другие вопросы по теме