Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Использование MySQL из Node.js и TypeScript на удалённом сервере Heroku

Запись от 8Observer8 размещена 12.08.2019 в 12:29
Показов 4116 Комментарии 0
Метки db, heroku, mysql, node.js, typescript

Содержание блога

Heroku удалил бесплатный хостинг в ноябре 2022. Есть альтернативы, например:
  • https://glitch.com/pricing - даётся 1000 часов на месяц. Файлы проектов будут открыты всем пользователям. Если к приложению не обращаются 5 минут, оно засыпает и просыпается в течение 30 секунду: "Это может привести к задержке ответа до 30 секунд для первого запроса, поступающего после периода бездействия.". Есть бесплатная база данных SQLite.
  • У хостинга Render ограничение на бесплатное использование 750 часов в месяц: https://render.com/docs/free. После 15 минут неактивности засыпает. Бесплатная база данных PostgreSQL удаляется через 90 дней. Есть возможность разместить SQLite.
  • Подборка бесплатных хостингов для баз данных



За основу взят пример с сайта Metanit, где показано подключение MySQL из Node.js: MySQL. Подключение к MySQL. Я переписал с JavaScript на TypeScript и захостил на Heroku: https://typescript-mysql-from-... kuapp.com/ Бесплатный хостинг имеет свойство засыпать, поэтому иногда нужно подождать несколько десятков секунд. Я добавил библиотеку socket.io для взаимодействия клиента с сервером через сокеты.

Я сделал кнопку "Check DB Connection", которая отправляет запрос на сервер о состоянии подключения и возвращает JSON сообщение:

JSON
1
{"message":"DB is connected"}
, означающее, что соединение с базой данных установлено. А так же есть кнопка "Show Data from DB", которая выводит содержимое базы данных:

JSON
1
{"rows":[{"id":1,"name":"Ivan"},{"id":2,"name":"Bob"}]}
Клиент и сервер я пишу на TypeScript. Моё приложение хранится в приватном репозитории на GitHub. Репозиторий я соединил с бесплатным хостингом Heroku, который разворачивает приложение при каждом push.

Это не реклама Heroku или Metanit, а мотивация для других, чтобы пробовали сразу разворачивать на реальных хостингах, потому что это реально мотивирует, когда приложение можешь показать всем желающим, дав лишь ссылку, чтобы запустить на любой ОС, где есть браузер. На сайте Heroku есть пошаговая инструкция, как им пользоваться, чтобы развернуть Node.js веб-приложение. Я считаю, Heroku - очень удобный и полезный ресурс для учебной практики.

Данный пример может быть использован для начала создания клиент-серверных веб-приложений с базой данных и для сетевых игр с мультиплеером или кооперативом, где базу данных MySQL можно использовать для регистрации и хранения игровых данных.

Если вам нужны исходники моего примера, то подумайте, действительно ли они вам нужны или вы можете написать их сами. Написать самому гораздо полезнее, чем разбираться в чужом коде.
Метки db, heroku, mysql, node.js, typescript
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Новые блоги и статьи
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru