> 웹 프론트엔드 > JS 튜토리얼 > Express.js 및 MongoDB를 사용한 CRUD 작업

Express.js 및 MongoDB를 사용한 CRUD 작업

DDD
풀어 주다: 2024-12-20 14:34:14
원래의
350명이 탐색했습니다.

CRUD Operations with Express.js and MongoDB

이 가이드에서는 Express.js 및 MongoDB를 사용하여 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 구현하는 방법을 설명합니다. CRUD는 데이터베이스와 상호작용하기 위한 기본 개념이며 대부분의 웹 애플리케이션에 필수적입니다.

전제 조건

  • JavaScript, Node.js, Express.js에 대한 기본 지식
  • MongoDB가 로컬에 설치되었거나 MongoDB 클라우드 서비스(예: MongoDB Atlas)에 액세스합니다.
  • npm이 설치되었습니다.

프로젝트 설정

  1. Node.js 프로젝트 초기화:
   mkdir crud-express-mongodb
   cd crud-express-mongodb
   npm init -y
로그인 후 복사
  1. 종속성 설치:
   npm install express mongoose body-parser cors dotenv
로그인 후 복사
  1. 다음 폴더 구조를 만듭니다.
   crud-express-mongodb/
   |-- models/
   |-- routes/
   |-- .env
   |-- server.js
로그인 후 복사

1단계: MongoDB 연결 설정

파일: .env

MONGO_URI=mongodb://localhost:27017/crudDB
PORT=5000
로그인 후 복사

파일: server.js

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const cors = require("cors");
require("dotenv").config();

const app = express();

// Middleware
app.use(bodyParser.json());
app.use(cors());

// MongoDB Connection
mongoose
  .connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log("MongoDB Connected"))
  .catch((err) => console.error("MongoDB connection error:", err));

// Routes
const itemRoutes = require("./routes/itemRoutes");
app.use("/api/items", itemRoutes);

// Start Server
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
로그인 후 복사

2단계: MongoDB 스키마 생성

파일: models/Item.js

const mongoose = require("mongoose");

const itemSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  description: {
    type: String,
    required: true,
  },
  price: {
    type: Number,
    required: true,
  },
}, { timestamps: true });

module.exports = mongoose.model("Item", itemSchema);
로그인 후 복사

3단계: CRUD 경로 구현

파일: 경로/itemRoutes.js

const express = require("express");
const router = express.Router();
const Item = require("../models/Item");

// Create an item
router.post("/", async (req, res) => {
  try {
    const newItem = new Item(req.body);
    const savedItem = await newItem.save();
    res.status(201).json(savedItem);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// Get all items
router.get("/", async (req, res) => {
  try {
    const items = await Item.find();
    res.status(200).json(items);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// Get an item by ID
router.get("/:id", async (req, res) => {
  try {
    const item = await Item.findById(req.params.id);
    if (!item) return res.status(404).json({ error: "Item not found" });
    res.status(200).json(item);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// Update an item by ID
router.put("/:id", async (req, res) => {
  try {
    const updatedItem = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
    if (!updatedItem) return res.status(404).json({ error: "Item not found" });
    res.status(200).json(updatedItem);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

// Delete an item by ID
router.delete("/:id", async (req, res) => {
  try {
    const deletedItem = await Item.findByIdAndDelete(req.params.id);
    if (!deletedItem) return res.status(404).json({ error: "Item not found" });
    res.status(200).json({ message: "Item deleted" });
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

module.exports = router;
로그인 후 복사

4단계: API 테스트

Postman 또는 cURL과 같은 도구를 사용하여 다음 엔드포인트를 테스트하세요.

  1. 항목 만들기:
   POST /api/items
   Content-Type: application/json
   {
     "name": "Laptop",
     "description": "A powerful laptop",
     "price": 1200
   }
로그인 후 복사
  1. 모든 항목 가져오기:
   GET /api/items
로그인 후 복사
  1. ID로 항목 가져오기:
   GET /api/items/:id
로그인 후 복사
  1. 항목 업데이트:
   PUT /api/items/:id
   Content-Type: application/json
   {
     "name": "Gaming Laptop",
     "description": "A high-end gaming laptop",
     "price": 1500
   }
로그인 후 복사
  1. 항목 삭제:
   DELETE /api/items/:id
로그인 후 복사

위 내용은 Express.js 및 MongoDB를 사용한 CRUD 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿