Доступ к загруженным пользователем изображениям в развернутом приложении MERN - PullRequest
0 голосов
/ 25 марта 2020

Я относительно новый разработчик, и я создал приложение для личного блога, где пользователь может создать публикацию и загрузить изображение, которое будет использоваться в качестве эскиза для этого сообщения.

Пока что бэкэнд и внешний интерфейс работают блестяще, и я могу получить изображение, сохранить его локально в папке на моем компьютере, сохранить путь к файлу в MongoDB, а затем получить к нему доступ и соответственно отобразить его в пользовательском интерфейсе.

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

Любые предложения о хорошем сервисе такого рода а если можно, что нибудь бесплатное, подходящее для моего небольшого проекта? Или какие-либо предложения по альтернативному способу решения этой ситуации?

Любые советы будут с благодарностью!

Заранее спасибо!

ПРИМЕЧАНИЕ : Я планирую развернуть свое приложение с Heroku, поэтому, если вы когда-нибудь решали эту проблему непосредственно с помощью Heroku, поделитесь своим опытом.

1 Ответ

0 голосов
/ 26 марта 2020

Да, у меня есть несколько приложений, которые делают это! Зарегистрируйте бесплатную учетную запись MongoDB Atlas , а затем сохраните данные на их серверах и укажите в приложении Express URL-адрес подключения. По сути, они дадут вам URL-адрес, подобный следующему:

mongodb + srv: // your-cluster-name:a232dfjoi39034r@atlas-free-cluster-czaoo.mongodb.net/blog-app?retryWrites=true

, который затем можно сохранить в файле .env, например так :

MONGODB_URL=mongodb+srv://your-cluster-name:a232dfjoi39034r@atlas-free-cluster-czaoo.mongodb.net/blog-app?retryWrites=true

И доступ из вашего приложения выглядит так:

mongoose.connect(process.env.MONGODB_URL, connectionOptions)
  .catch((err) => {
    console.log('Error on initial DB connection: ', err);
  });

Вам нужно будет загрузить файлы .env в ваше приложение, используя npm пакеты типа dotenv на стороне разработки. Для heroku вы можете использовать heroku-cli и установить любые переменные окружения для своего приложения следующим образом:

heroku config:set MONGODB_URL=mongodb+srv://your-cluster-name:a232dfjoi39034r@atlas-free-cluster-czaoo.mongodb.net/blog-app?retryWrites=true

Обратите внимание, что URL-адрес разработки MongoDB может быть строкой подключения к локальному например,

MONGODB_URL = mongodb: // localhost: 27017 / my-blog-app

А героем может быть кластер MongoDB Atlas.

Есть несколько других настроек, которые нужно сделать для приложений Node, например, наличие в пакете сценария 'start'. json, который для Express приложений, созданных с помощью express -generator, выглядит следующим образом:

  "scripts": {
    "start": "node ./bin/www"

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

Вам также нужно будет установить PORT из process.env.PORT, который heroku будет устанавливать на своем конце, и на своем конце вы можете просто по умолчанию 3000:

const PORT = process.env.PORT || 3000;
app.listen(PORT);

Если у вас есть какие-либо вопросы, не стесняйтесь писать мне в личку или просто спросите здесь, и я могу уточнить дальше. Первые несколько раз это может пугать, но на самом деле очень легко развернуть материал на героку таким образом, как только вы его освоите! Вы также можете проверить heroku docs для развертывания приложений Node.

...