Это кажется глупым вопросом, но я в тупике, поэтому вот он:
Я создал приложение стека MERN, но не могу понять, как его развернуть и поддерживать функциональность. В настоящее время у меня есть каталог client, который содержит мой код реакции, и каталог server, который содержит код моего сервера. Сервер работает на моем локальном компьютере с портом 4000. Когда я запускаю сервер с помощью интерфейса командной строки, он подключается к MongoDB Atlas, а затем любые запросы на выборку к http://localhost:4000 из внешнего интерфейса обрабатываются правильно. В настоящее время клиент работает на порту 3000.
Так что на локальной машине все отлично. Но когда я развертываю, где должен размещаться сервер? Должен ли я по-прежнему подключаться к MongoDB с локальной машины пользователя? Должен ли я предположить, что у пользователя будет доступен порт 4000 на его локальной машине? Кроме того, зачем мне вообще нужно размещать сервер? Разве не было бы более эффективно просто запрашивать базу данных MongoDB непосредственно из внешнего интерфейса, а не маршрутизировать через подключение к локальному серверу?
И последний вопрос: если я подключаюсь к MongoDB с компьютера пользователя, в какой момент я должен закрыть это соединение?
Заранее спасибо за помощь!





Вы не можете просто подключиться к базам данных из внешнего интерфейса, потому что это раскроет ваши учетные данные, и любой сможет использовать ваше соединение. Чтобы разместить ваше приложение nodejs, вы запустите его на порту на сервере (локально), а затем используйте обратный прокси-сервер для перенаправления входящих запросов на ваш сервер на порт, на котором работает ваше приложение.
Не так, скажем, вы размещаете свой интерфейс на netlify, тогда ваш интерфейс будет называть вас внутренним сервером, который будет размещен на каком-то сервере на героку или aws или любом другом сервисе. Затем ваш внутренний сервер подключится к базе данных и получит все, что вам нужно, и ответит на запрос API.
Хорошо, это имеет больше смысла. Буду ли я открывать и закрывать соединение каждый раз, когда пользователь делает запрос? Или я просто всегда буду держать соединение открытым на сервере?
вы можете оставить его открытым, если вы используете что-то ODM, например mongoose.
Идеально. Я только что реализовал это, и это работает. Спасибо за помощь.
Итак, чтобы уточнить, скажем, я размещаю свое приложение на Netlify. Пользователь переходит в домен, где мой интерфейс размещен на Netlify. При загрузке страницы на компьютере пользователя запускается локальный сервер (обратный прокси). Затем, в любое время, когда мне нужно получить доступ к данным из MongoDB, я делаю запрос обратному прокси-серверу, работающему на локальном компьютере, который перенаправляется в MongoDB. Это правильно? Если да, можете ли вы уточнить, когда/где я должен запустить и закрыть обратный прокси/соединение с MongoDB?