Где находится сервер, размещенный в рабочем приложении MERN?

Это кажется глупым вопросом, но я в тупике, поэтому вот он:

Я создал приложение стека MERN, но не могу понять, как его развернуть и поддерживать функциональность. В настоящее время у меня есть каталог client, который содержит мой код реакции, и каталог server, который содержит код моего сервера. Сервер работает на моем локальном компьютере с портом 4000. Когда я запускаю сервер с помощью интерфейса командной строки, он подключается к MongoDB Atlas, а затем любые запросы на выборку к http://localhost:4000 из внешнего интерфейса обрабатываются правильно. В настоящее время клиент работает на порту 3000.

Так что на локальной машине все отлично. Но когда я развертываю, где должен размещаться сервер? Должен ли я по-прежнему подключаться к MongoDB с локальной машины пользователя? Должен ли я предположить, что у пользователя будет доступен порт 4000 на его локальной машине? Кроме того, зачем мне вообще нужно размещать сервер? Разве не было бы более эффективно просто запрашивать базу данных MongoDB непосредственно из внешнего интерфейса, а не маршрутизировать через подключение к локальному серверу?

И последний вопрос: если я подключаюсь к MongoDB с компьютера пользователя, в какой момент я должен закрыть это соединение?

Заранее спасибо за помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы не можете просто подключиться к базам данных из внешнего интерфейса, потому что это раскроет ваши учетные данные, и любой сможет использовать ваше соединение. Чтобы разместить ваше приложение nodejs, вы запустите его на порту на сервере (локально), а затем используйте обратный прокси-сервер для перенаправления входящих запросов на ваш сервер на порт, на котором работает ваше приложение.

Итак, чтобы уточнить, скажем, я размещаю свое приложение на Netlify. Пользователь переходит в домен, где мой интерфейс размещен на Netlify. При загрузке страницы на компьютере пользователя запускается локальный сервер (обратный прокси). Затем, в любое время, когда мне нужно получить доступ к данным из MongoDB, я делаю запрос обратному прокси-серверу, работающему на локальном компьютере, который перенаправляется в MongoDB. Это правильно? Если да, можете ли вы уточнить, когда/где я должен запустить и закрыть обратный прокси/соединение с MongoDB?

JBrown 12.10.2022 16:05

Не так, скажем, вы размещаете свой интерфейс на netlify, тогда ваш интерфейс будет называть вас внутренним сервером, который будет размещен на каком-то сервере на героку или aws или любом другом сервисе. Затем ваш внутренний сервер подключится к базе данных и получит все, что вам нужно, и ответит на запрос API.

janmejay 12.10.2022 16:43

Хорошо, это имеет больше смысла. Буду ли я открывать и закрывать соединение каждый раз, когда пользователь делает запрос? Или я просто всегда буду держать соединение открытым на сервере?

JBrown 12.10.2022 16:52

вы можете оставить его открытым, если вы используете что-то ODM, например mongoose.

janmejay 12.10.2022 17:55

Идеально. Я только что реализовал это, и это работает. Спасибо за помощь.

JBrown 12.10.2022 18:21

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