Чтобы упростить работу пользователей, узнайте, как загружать изображения в облако с помощью Node.js и MongoDB.

Контур

⭐ Настройка мультера для загрузки изображений.

⭐ Загрузка изображения в облако.

⭐ Связывание изображения с базой данных MongoDB.

Недавно я решил создать свой собственный REST API, чтобы улучшить функциональность моего веб-сайта Fruit Shop.

С большими усилиями я смог создать свой собственный REST API для веб-сайта. Локально все работало отлично, включая графику и данные о товарах. Однако, когда я разместил свой API на Heroku, все начало ломаться.

Что я имею в виду, позвольте мне объяснить 👇

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

Как вы можете видеть из сообщения об ошибке, в нем говорится, что маршрут в настоящее время недоступен. Очевидно, это не то, чего я хотел, поэтому я попытался исправить это сам.

Наконец, после долгих исследований, я нашел решение, которое, я уверен, сработает и для вас.

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

Давайте погрузимся

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

Предпосылки

  • Thunder Client или Postman для тестирования API.
  • Редактор кода.
  • Все в порядке, если вы можете понять код в начальном файле.

Давайте посмотрим, как это сделать

  • Получите стартовый файл.


  • Откройте терминал и установите все необходимые пакеты.

✍️ Примечание Проект соответствует архитектуре REST API.

  • Чтобы начать работу, вам просто нужно создать файл среды и добавить две переменные: MONGO_URI и PORT.
  • Вставьте строку подключения MongoDB в MONGO_URI.
  • Запустим сервер.

В идеале вы должны получить результат, как на картинке выше.

  • Теперь давайте проверим некоторые маршруты в папке маршрутов и протестируем их.

  • Хорошо, теперь давайте создадим профиль пользователя.
  • Первый шаг — импортировать multer в ваш основной файл для составных данных.
  • Начните с создания хранилища для изображений профилей пользователей.

Код

Объяснение кода

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

«имя файла»: «1663478472266–946908179.jpg»

Создайте обработчик для составных данных

  1. Создайте функцию handleMultipartData.
  2. Используйте на нем метод мультера.
  3. Есть несколько вариантов, которые Multer принимает, но в вашем случае вам нужно передать конфигурацию хранилища, которую вы создали ранее, и ограничение на количество файлов.
  4. и предоставить один («изображение»)

  • Используйте handleMultipartData в файле маршрута main.js.

Полный код

Время протестировать вашу установку.

В клиенте Thunder откройте маршрут создания пользователя и введите имя пользователя и адрес электронной почты с профилем.

  • Кроме того, вы не найдете файлов в папке для загрузки.
  • Давайте отправим запрос и надеемся, что все работает нормально.

  • Сервер ответил данными Пользователя и Файла.
  • Вы также можете заметить, что папка загрузки больше не пуста.

  • Все работает нормально.
  • Теперь вы можете загружать изображения User на сервер.

Загрузка изображения в облако

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


Вот шаги, которые вам нужно выполнить

  • Создайте учетную запись Cloudinary.
  • После того, как вы создали свою учетную запись, пришло время настроить веб-приложение.

  • Нажмите «Настроить SDK».
  • Выберите параметр Node.js.

  • Скопируйте ключи.
  • Перейдите к созданию пользовательского маршрута в файле main.js.
  • Я настоятельно рекомендую вам сохранить эти ключевые значения в вашем файле среды.

Ладно, напишем код, а потом запустим.

Код

Объяснение кода

  1. Код просто возвращается, если filePath не определен.
  2. Укажите filePath в методе cloudinary.v2.uploader.upload.

Давайте посмотрим, был ли ваш файл успешно загружен в облако.

  • Это здорово, что у нас есть результаты.

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

  • Отлично, изображение успешно загружено в облако.

Полный код

Связывание изображения с базой данных

  • Откройте user.js в папке моделей и проверьте схему пользователя.

  • Как видите, пользовательская схема уже создана. Вы можете настроить его в соответствии с вашими требованиями.

Создать пользовательский документ

  • Идите и создайте новую базу данных.
  • Импортируйте файл user.js в файл main.js.

Объяснение кода

  1. Строка 57 — деконструировано имя и адрес электронной почты из req. тело.
  2. Строка 61 — ожидание и создание пользователя методом User.create().
  3. Строка 62 и 63. Передайте имя и адрес электронной почты в метод создания.
  4. Строка 64 — параметру изображения назначьте безопасный URL-адрес облачного изображения.

⌛ Пришло время загрузить пользовательские данные в базу данных.

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

Заключение

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

По любым вопросам и предложениям обращайтесь ко мне в мой Twitter ✌🏻

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.