пятница, 24 августа 2018 г.

A programmer: JavaScript #3

Сегодня немного о базе даных MongoDB и обработке POST-запроса. В прошлый раз мы просто показывали пользователю определенную страницу в зависимости от того, что он нажал или ввел в адресной строке. Но часто бывает необходимо сохранить какую-то информацию, которую пользователь вводит на сайте. Для этого используют базы данных. Базы данных бывают реляционные и нереляционные. Реляционные - это те, которые предполагают отношения между своими составными частями, нереляционные - простые наборы (коллекции) документов, в которых сами документы могут быть самыми разными. MongoDB - нереляционная база данных, и выбрана из соображений простоты.



Для начала необходимо установить MongoDB на свой компьютер. О самой установке говорить не буду, упомяну лишь о том, что при работе в терминале, надо сначала перейти в папку, где есть файлы

mongod.exe - сервер базы данных и
mongo.exe - консольный терминал для работы с базой данных

Обычно (если у вас Windows и вы не меняли путь для установки) она имеет приблизительно такой вид:

C:\Program Files\MongoDB\Server\4.0\bin

Далее надо запустить сервер. Для этого можно просто набрать mongod, но если вас не устраивает заданное по умолчанию место хранения данных (где именно оно находится по умолчанию - надо ещё смотреть в настройках), можно указать собственное (не забудьте предварительно эту папку создать):

mongod --dbpath <адрес желаемого места хранения данных>

Запустив это, вы увидите много букв, среди которых должно быть сообщение о том, что сервер запущен на порте 27017. Далее вы можете запустить mongo.exe и работать в коммандной строке терминала, а можете установить и использовать графический интерфейс. Чтобы всё это работало в нашем проекте, надо установить соответствующие пакеты (например, через npm install <имя пакета>) - mongod и mongodb. Проследите, чтобы они появились в разделе dependencies файла package.json. Теперь можно работать - у вас есть сервер базы данных и инструменты для работы с ним.

Но для начала следует отвлечься на одну важную деталь. Обычно пользователь вводит сразу несколько "кусочков" информации на странице и только потом отправляет всё сразу на сервер.


Очевидно, что GET-запрос для этого не подходит. Для этого нужен POST-запрос - он обрабатывает формы. Естественно, для этого вы должны разместить соответствующий код с формой у себя на странице (код для указанной выше формы можно посмотреть на bootstrap'е). Обработчик POST-запроса в коде программы будет выглядеть следующим образом (на всякий случай отмечу, что это только засть кода из файла):


Здесь мы видим подключение модуля body-parser и использование его для того, чтобы распарсить (определенным образом считать) то, что введено в форму. В качестве вывода имеем итоговую страницу (about-success), куда передаются на вывод эти же данные (req.body).

Теперь нам надо то же самое (считанные данные, которые ввел пользователь) передавать не на вывод, а в базу данных. Но об этом - в следующий раз.

Комментариев нет: