DevGang
Авторизоваться

Руководство для начинающих по операциям CRUD в NodeJS и MongoDB

Операции CRUD означают создание, чтение, обновление и удаление. Эта процедура позволяет работать с данными из базы данных MongoDB.

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

Что такое MongoDB

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

Что такое Node.js

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

Обязательное условие

  • Установите Node.js: загрузите и установите Node.js с официального сайта, если вы еще этого не сделали.
  • Установите MongoDB: установите MongoDB на свой компьютер. Следуйте инструкциям на официальном сайте MongoDB.

Шаг 1. Инициализируйте новый проект

Откройте предпочитаемый вами редактор кода (VS code) и перейдите в каталог, в котором вы хотите создать проект, затем введите команду ниже, чтобы создать новый проект.

npm init

Затем используйте команду ниже, чтобы установить необходимые пакеты.

 npm install express mongodb

Чтобы убедиться, что все работает правильно, добавьте «serve»: «node index.js» под скриптом в package.JSON для запуска программы.

Создайте и протестируйте сервер express.js.

В корневом каталоге создайте файл index.js и введите в него следующий код.

const express = require('express')
const app = express()

app.listen(3000, () =>{
    console.log('Server is running on port 3000')
});

app.get('/', (req, res) =>{
    res.send("Hello Node API")
})

В этом коде мы создаем базовый сервер Node.js с использованием платформы Express, который прослушивает порт 3000. Когда вы посещаете корневой URL-адрес («/»), он отвечает сообщением «Hello Node API».

Теперь запустите приложение с помощью команды «npm run Serve», чтобы увидеть результаты, как показано ниже.

Чтобы проверить, работает ли сервер, введите localhost:3000 в браузере и посмотрите результаты, как показано ниже.

Создание соединения MongoDB

Посетите mongodb и войдите в свою учетную запись или создайте ее, если еще этого не сделали.

Создайте новый проект. Дайте ему имя и нажмите «Создать проект».

Нажмите кнопку «Создать», а затем выберите бесплатный шаблон m0. Прокрутите вниз, дайте своему кластеру имя и нажмите «Создать развертывание».

На следующем экране введите имя пользователя и пароль для вашего кластера; обязательно скопируйте или запомните пароль. Нажмите Создать пользователя базы данных.

После этого нажмите кнопку «Выбрать способ подключения» и выберите «Подключиться».

Через драйверы скопируйте строку подключения.

Для доступа к mongodb нам нужна зависимость под названием mongoose, поэтому обязательно установите ее npm i mongoose и добавьте вверху файла index.js const mongoose = require('mongoose');.

Создайте файл db.js в корневом каталоге и вставьте следующий код, заменив его созданным паролем.

const mongoose = require('mongoose');

mongoose.connect("mongodb+srv://admindan:admin1234@crudbackend.5goqnqm.mongodb.net/?retryWrites=true&w=majority&appName=crudbackend")
.then(() => {
    console.log('Connected to the database');
})
.catch((error) => {
    console.log('Connection failed', error);
});

module.exports = mongoose;

Импортировать const mongoose = require('./db'); в верхней части файла index.js

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

Создание функций CRUD

Теперь, когда наша база данных подключена, нам нужна модель для хранения наших данных в mongodb.

Создайте папку моделей в корневом каталоге, затем создайте файл с именем «product.model.js» и вставьте в него следующий код.

const mongoose = require("mongoose");

const ProductSchema = mongoose.Schema(
  {
    name: {
      type: String,
      required: [true, "Please enter product name"],
    },

    quantity: {
      type: Number,
      required: true,
      default: 0,
    },

    price: {
      type: Number,
      required: true,
      default: 0,
    },

    image: {
      type: String,
      required: false,
    },
  },
  {
    timestamps: true,
  }
);


const Product = mongoose.model("Product", ProductSchema);

module.exports = Product;

Создать: определение функции для вставки данных в mongodb

Мы создаем функцию для хранения данных в нашей коллекции MongoDB. Создайте папку контроллеров в корневом каталоге и файл с именем «product.controller.js» внутри нее. Вставьте в него следующий код.

const Product = require("../models/product.model");

const getProducts = async (req, res) => {
  try {
    const products = await Product.find({});
    res.status(200).json(products);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const getProduct = async (req, res) => {
  try {
    const { id } = req.params;
    const product = await Product.findById(id);
    res.status(200).json(product);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const createProduct = async (req, res) => {
  try {
    const product = await Product.create(req.body);
    res.status(200).json(product);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const updateProduct = async (req, res) => {
  try {
    const { id } = req.params;

    const product = await Product.findByIdAndUpdate(id, req.body);

    if (!product) {
      return res.status(404).json({ message: "Product not found" });
    }

    const updatedProduct = await Product.findById(id);
    res.status(200).json(updatedProduct);
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

const deleteProduct = async (req, res) => {
  try {
    const { id } = req.params;

    const product = await Product.findByIdAndDelete(id);

    if (!product) {
      return res.status(404).json({ message: "Product not found" });
    }

    res.status(200).json({ message: "Product deleted successfully" });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
};

module.exports = {
  getProducts,
  getProduct,
  createProduct,
  updateProduct,
  deleteProduct,
};

В этом коде мы определяем операции CRUD для нашей модели продукта. Он включает в себя:

  • getProducts: извлекает все продукты.
  • getProduct: извлекает продукт по его идентификатору.
  • createProduct: Создает новый продукт с предоставленными данными.
  • updateProduct: обновляет продукт по его идентификатору.
  • deleteProduct: удаляет продукт по его идентификатору.

Каждая функция обрабатывает возможные ошибки и возвращает соответствующие ответы HTTP.

Определить маршруты

Создайте папку маршрутов в корневом каталоге и создайте в ней product.route.js. Вставьте в него приведенный ниже код.

const express = require("express");
const Product = require("../models/product.model.js");
const router = express.Router();
const {getProducts, getProduct, createProduct, updateProduct, deleteProduct} = require('../controllers/product.controller.js');


router.get('/', getProducts);
router.get("/:id", getProduct);

router.post("/", createProduct);

// update a product
router.put("/:id", updateProduct);

// delete a product
router.delete("/:id", deleteProduct);




module.exports = router;

В этом коде мы настраиваем экспресс-маршруты для операций CRUD для нашей модели продукта. он импортирует необходимые модули, создает экспресс-маршрутизатор и определяет маршруты для:

Получение всех продуктов (GET/).

Получение одного продукта по идентификатору (GET /:id).

Создание нового продукта (POST/).

Обновление товара по ID (PUT /:id).

Удаление товара по ID (DELETE /:id).

Наконец, он экспортирует маршрутизатор для использования в основном приложении.

Тестирование вашего API

Теперь, когда мы создали операции CRUD, давайте их протестируем. Мы собираемся использовать бессонницу. Если у вас ее нет, вы можете скачать и создать учетную запись.

Выполните действия, описанные ниже, чтобы протестировать операцию создания (POST REQUEST).

Откройте «Бессонницу». Запустите приложение insomnia.

  • Создать новый запрос: нажмите кнопку «+», чтобы создать новый запрос.
  • Установить тип запроса: выберите «POST» в раскрывающемся меню рядом с именем запроса.
  • Введите текст запроса: нажмите вкладку «Тело», выберите «JSON» и введите данные JSON, которые вы хотите отправить.
  • Отправить запрос: нажмите кнопку «Отправить», чтобы отправить запрос на сервер.
  • Просмотр ответа: проверьте ответ сервера на нижней панели Insomnia.

API для создания продукта в MongoDB прошел успешно, о чем свидетельствует статус 200 ok на рисунке ниже, который иллюстрирует, как он должен работать.

Таким образом, у вас должна быть возможность просмотреть созданный элемент, когда вы перейдете к базе данных и выберете «Просмотреть коллекцию».

Тестовые операции чтения

Техника тестирования запроса на получение почти такая же, как мы обсуждали выше; вы делаете новый запрос и выбираете GET в раскрывающемся меню.

Перейдите к использованию последних двух вариантов: обновить и удалить (PUT, DELETE) из раскрывающегося меню.

Заключение

Благодаря этому руководству для начинающих у вас должна быть прочная основа для выполнения операций CRUD с использованием NodeJS и MongoDB. Чтобы получить дополнительную техническую информацию, подписывайтесь на меня в X и подключайтесь к LinkedIn.

Источник:

#JavaScript #MongoDB #NodeJS #Начинающим
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу