MongoDB를 사용한 NodeJS CRUD API
Prerequisite
시작하려면 이미 MongoDB 클러스터를 설정했고 연결 URI가 있다고 가정합니다. 그렇지 않은 경우 내previous article에서 설정 방법을 찾을 수 있으며 무료 MongoDB 클러스터 설정에 대한 단계별 안내가 제공됩니다. 또한 NodeJS 및 Express에 대한 실무 지식이 있다고 가정합니다.
Setting Up
시작하기 위해 가장 먼저 할 일은 파일 구조를 만드는 것입니다. 루트 폴더를 만든 다음 루트 폴더 안에 다음 하위 폴더를 만드는 것이 좋습니다.
Installing Dependencies
이제 시작하려면 먼저 server.js 파일을 만든 다음 몇 가지 필수 종속 항목을 설치해야 합니다. 그러기 위해서는
npm init -y
touch server.js
touch .env
mkdir controllers
mkdir models
mkdir routes
npm install express mongoose dotenv cors body-parser
이렇게 하면 폴더 구조 및 종속성 설치가 완료됩니다. 이제 다음 단계는 mongoDB 연결 URI를 가져오고 .env 파일에 배치하는 것입니다. 이렇게 하려면 .env 파일을 열고 다음과 같이 편집합니다.
DB = "YOUR_CONNECTION_STRING_HERE"
Setting up Server and Routes
이제 경로를 설정하기 위해 server.js 파일을 편집하겠습니다. 다음 코드를 복사하여 server.js 파일에 붙여넣습니다.
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();
const routes = require("./app/routes");
var corsOptions = {
origin: "http://localhost:8081",
};
app.use(cors(corsOptions));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
let DB = process.env.DB;
mongoose
.connect(DB, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("mongoDB connected Successfully"))
.catch((err) => console.log(err));
app.use("/api/notes", routes);
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
그래서 기본적으로 우리가 여기서 하는 것은
Creating Models
MongoDB와 Mongoose를 사용하고 있기 때문에 모델이 있어야 합니다. 이 앱에는 메모에 대한 필드를 포함할 단 하나의 모델 NotesModel이 있습니다.
이제 모델 폴더 안에 NotesModel.js 파일을 만들고 다음 코드를 붙여넣습니다.
const mongoose = require("mongoose");
const NotesSchema = new mongoose.Schema(
{
title: String,
description: String,
},
{ timestamps: true }
);
const Note = mongoose.model("Note", NotesSchema);
module.exports = Note;
따라서 본질적으로 우리는 일을 단순하게 유지하기 위해 2개의 필드 제목과 문자열 유형의 설명만 가지고 있습니다. 또한 생성 및 수정 날짜를 기록하는 타임스탬프가 true로 설정되었습니다.
Creating Router and Controller
이제 server.js가 모두 설정되었으므로 컨트롤러와 라우터 설정을 시작할 수 있습니다.
컨트롤러 폴더 안에 index.js 파일을 만들고 다음 코드를 붙여넣습니다.
const NotesModel = require("../models/NotesModel");
exports.findAll = async (req, res) => {
try {
const notes = await NotesModel.find({});
res.send(notes);
} catch (error) {
res.status(500).send({
message: error.message || "Some error occured while retrieving Notes",
});
}
};
exports.create = async (req, res) => {
const Note = req.body;
try {
let NoteDoc = new NotesModel(Note);
await NoteDoc.save();
res.send(Note);
} catch (error) {
res.status(500).send(error);
}
};
exports.findOne = async (req, res) => {
const id = req.params.id;
try {
let Note = await NotesModel.findById(id);
res.send(Note);
} catch (error) {
res.status(500).send(error);
}
};
exports.update = async (req, res) => {
let { ...data } = req.body;
const result = await NotesModel.findOneAndUpdate(
{ _id: req.params.id },
data,
{
new: true,
}
);
res.send(result);
};
exports.delete = async (req, res) => {
try {
let id = req.params.id;
await NotesModel.findByIdAndDelete(req.params.id);
res.status(200).send();
} catch (error) {
res.status(500).send(error);
}
};
이 부분에는 데이터베이스에서 데이터 생성, 읽기, 업데이트 및 삭제를 위한 논리가 포함되어 있습니다. 이제 작동하려면 경로 파일로 가져와 적절한 방법/경로에 매핑해야 합니다. 이렇게 하려면 route 폴더 안에 index.js라는 파일을 만들고 다음 코드를 붙여넣습니다.
// Bring in the express server
const express = require("express");
// Bring in the Express Router
const router = express.Router();
// Import the Controller
const controller = require("../controllers");
// Create a new Note
router.post("/", controller.create);
// Get all Notes
router.get("/", controller.findAll);
// Get Note by Id
router.get("/:id", controller.findOne);
// Modify existing Note
router.put("/:id", controller.update);
// Delete Note by Id
router.delete("/:id", controller.delete);
module.exports = router;
이제 모두 설정되었으므로 다음을 실행할 수 있습니다.
node server.js
서버가 시작되고 포트:8080을 수신합니다. Postman을 사용하여 API를 테스트할 수 있습니다.
전체 프로젝트는 myGithub에서 찾을 수 있습니다.
Reference
이 문제에 관하여(MongoDB를 사용한 NodeJS CRUD API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rajandmr/nodejs-crud-api-with-mongodb-4mn1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)