Эта история является частью моей задачи TODO: создание приложения TODO с различными интерфейсными фреймворками. Но прежде чем я захочу начать с внешней части, я также хотел иметь работающую внутреннюю часть. Итак, эта история о бэкэнд части:
- Бэкенд-язык/фреймворк
- База данных
- Хостинг
NestJS
В качестве бэкенда я выбрал NestJS. Это строго типизированный фреймворк NodeJS с использованием TypeScript, и они смоделировали его по образцу Angular. Как разработчик Angular, я чувствую себя с NestJS как дома.
Prisma.io
Моему приложению TODO также нужна база данных. Для этого я выбрал Prisma.io. На первый взгляд Prisma выглядит как обычная база данных ORM. Но главные преимущества
- GraphQL готов
- Бесплатные размещенные базы данных
И бесплатная размещенная база данных — это то, что мне было нужно. Он входит в бесплатный уровень Prisma Cloud.
Цайт сейчас
Теперь мне все еще нужно разместить свой бэкэнд. Вот тут и приходит на помощь Zeit Now. Zeit — это комплексное решение для статического развертывания и развертывания JAMstack для команд, одержимых производительностью. Основные преимущества Zeit Now:
- бесплатное развертывание (кредитная карта не требуется)
- автоматический ssl готов
- псевдоним вашего личного домена (ов) для экземпляра (ов) Zeit
- поддержка бессерверных функций (см. их список поддерживаемых языков)
Итак, Zeit поддерживает NodeJS, и это то, что мне нужно, потому что NestJS основан на NodeJS.
Настройка NestJS и развертывание в Zeit
Сначала установите NestJS и запустите новое приложение.
Это даст нам стандартный проект NestJS с контроллером по умолчанию. Далее нужно установить Zeit Now и развернуть.
Теперь начинается «сложная» часть: развертывание. Сначала перейдите в корневую папку нового приложения NestJS. Для развертывания в Now вы можете просто использовать
Вот так просто. Команда Now будет искать файл конфигурации: now.json. Если файла конфигурации нет, он создаст экземпляр в Zeit Now и будет использовать имя папки, откуда был вызван Now, в качестве имени экземпляра.
Прежде чем вы попробуете это, я должен вам сказать, что это не сработает для приложений NestJS.
Чтобы заставить его работать для NestJS, вам нужно
- создать и настроить now.json в корневой папке проекта
- создать приложение NestJS для производства
- развернуть версию сборки сейчас
Настроить сейчас.json
Создайте приложение NestJS и разверните сейчас
Теперь мы можем создать приложение и развернуть его сейчас.
Если все прошло хорошо, Now предоставит вам URL вашей конечной точки, обычно в формате ‹имя приложения›.‹zeit username›.now.sh.
Создание и развертывание базы данных Prisma
Перейдите в корень вашего проекта и установите пакеты для Prisma.
Модель базы данных
Прежде чем мы сможем использовать базу данных, мы должны создать модель базы данных. Создайте файл с именем database.prisma (конечно, вы можете использовать любое имя файла) и добавьте модель
Настроить Призму
Далее мы можем настроить Prisma. Нам нужно указать, на какой конечной точке модель должна быть развернута (и может быть использована). Создайте файл с именем prisma.yml
Как видите, нам все еще нужно определить конечную точку:
- ‹регион›: это может быть us1 или eu1
- ‹имя пользователя prisma›: войдите в свою панель инструментов prisma и найдите свое имя пользователя в URL-адресе: https://app.prisma.io/‹имя пользователя›/
- ‹имя базы данных›: любое имя базы данных, которое вы хотите использовать
- ‹стадия›: это может быть prod или dev
Так например: https://eu1.prisma.sh/foobar-723f27/testdatabase/dev
Развертывание модели базы данных Prisma и создание файлов .ts
Далее мы готовы развернуть модель на Prisma.io и сгенерировать файлы .ts.
Нам нужны сгенерированные файлы .ts в нашем приложении NestJS.
Итак, после создания prisma мы можем импортировать клиентскую библиотеку Prisma.
Бэкэнд TODO
Вы можете проверить мой бэкенд, который я использую для задачи TODO:
Дополнительная информация
Документация NestJS
Документация Zeit
Модель данных Prisma
Клиент Prisma
Это все на данный момент.
Вы можете найти меня на :
- linkedin: https://www.linkedin.com/in/fransjoleihitu/
- GitHub: https://github.com/fransyozef/
- Instagram: https://www.instagram.com/thehangrycoder/