Руководство для начинающих по созданию нашего первого сервера GraphQL с Apollo и TypeORM

В последние несколько лет популярность GraphQL очень быстро растет, и многие крупные компании начали применять эту технологию для создания своих API.

Цель этого руководства - предоставить основные шаги для создания сервера NodeJS GraphQL с использованием действительно мощного стека, включающего Apollo, TypeORM и TypeScript.

Давай начнем!

Для этого руководства я выбрал postgres, но TypeORM поддерживает все наиболее часто используемые драйверы баз данных.
Если вы хотите углубиться в TypeORM: https://typeorm.io/#/

Внутри папки PostgreSQL [v] мы можем найти p gAdmin, самую популярную платформу администрирования для PostgreSQL. Отсюда мы можем легко управлять серверами и базами данных.

  • Создайте базу данных из pgAdmin, имя и информация о соединении будут использоваться в ormconfig.json позже.

Самый быстрый способ начать - использовать Typeorm CLI для создания стартового проекта.

  • Установить TypeORM глобально:
    npm install typeorm -g
  • Внутри каталога, в котором мы хотим создать проект, выполните следующую команду TypeORM:
    typeorm init --name apollo-server-boilerplate --database postgres

Это должно создать и поддержать следующую структуру проекта…

… И следующий package.json:

Мы можем использовать библиотеку npm-check-updates для проверки и обновления библиотек:
https://www.npmjs.com/package/npm-check-updates

  • Установить зависимости:
    yarn install
  • Добавить пакеты:
    yarn add express graphql apollo-server-express
  • Добавьте типы:
    yarn add -D [@]types/express [@]types/graphql
  • Обновите ormconfig.json

Файл ormconfig.json - это точка входа для TypeORM. Здесь мы можем указать конфигурации для подключения и сопоставить ORM с базой данных. Для целей этого руководства мы должны изменить только поля имени пользователя, пароля и базы данных в соответствии с нашей личной конфигурацией.

  • Обновите tsconfig.json
    Следующий сценарий должен настроить параметры компилятора прав для TypeScript.

Теперь мы готовы к настройке Apollo Server.

  • Добавьте typeDefs.ts и resolvers.ts

В папке src мы можем создать 2 файла:
1) typeDefs.ts - ›Построить схему с использованием языка схем GraphQL
2) resolvers.ts -› Предоставить функции преобразователей для наших полей схемы

В реальном сценарии для больших приложений мы можем структурировать проект с модулями на основе домена и создать схему и преобразователь для каждого модуля.

Для этого руководства я создаю следующие файлы просто в качестве небольшого примера.

Как видите, в файле typeDefs.ts мы определяем наши типы и структуры API, а в файле resolvers.ts мы реализуем функции для нашей схемы.

В приведенном выше примере мы выполняем чтение (запрос) и создание (мутацию) в базе данных с помощью функций TypeORM.

  • Откройте файл src / index.ts. Мы можем удалить весь контент и заменить что-то вроде этого:

Здесь мы создаем экземпляр ApolloServer, открываем соединение с базой данных и запускаем сервер NodeJS.

  • Начальный сервер:
    yarn start
  • Открытая площадка GraphQL:
    http: // localhost: 4000 / graphq l
  • Проверить мутацию и запрос

Наслаждаться ;)

Вот полный код на git:
https://github.com/peppinho89/apollo-server-boilerplate

Другие полезные ссылки:
- TypeORM: https://typeorm.io/#/
- GraphQL: https://graphql.org/ прев
- Сервер Apollo: «https://github.com/apollographql/apollo-server