분류 javascript

MERN stack A to Z: Part 1 (2)

컨텐츠 정보

  • 조회 163 (작성일 )

본문

MongoDB를 이용한 데이터베이스 관리 


이제 MongoDB로 데이터베이스 설정을 할 시간입니다. 간단히 하기 위해 MongoDB Atlas를 사용합니다.


MongoDB Atlas에 대한 계정 생성 


MongoDB Atlas는 MongoDB를 구축 한 팀에서 개발한 완전 관리형 클라우드 데이터베이스입니다.


먼저, 계정이 필요합니다. 하나 만들고 절차를 따르십시오. 계정을 만들면 다음과 같은 내용이 나타납니다.


MongoDB Atlas Homescreen 


프로젝트 0 섹션 (왼쪽 상단)을 클릭하면 새 프로젝트를 만들기 위한 버튼이 표시됩니다. 프로젝트를 작성하고 프로젝트를 선택하십시오.


이제, 생성 한 프로젝트에서 Build a Cluster 버튼을 클릭하십시오. 모든 정보가 표시됩니다. 맨 아래에는 클러스터 이름이라는 섹션이 표시되고 해당 이름을 클릭하고 데이터베이스 이름을 입력 한 다음 클러스터 생성 버튼을 누르십시오.


2 ~ 3 분 후 모든 것이 잘되면 다음과 같은 것을 발견 할 것입니다 :


Creating A Cluster In MongoDB Atlas 


CONNECT 단추를 클릭하고 데이터베이스의 사용자 이름 및 암호 양식을 작성하십시오.


Setting Up Our Connection 


이제 Create MongoDB User 버튼을 누르십시오. 현재 IP 주소 나 다른 IP 주소 중 하나를 선택할 수도 있습니다.


이제 CONNECT 버튼 또는 연결 방법 선택 버튼을 따르면 몇 가지 다른 방법이 표시됩니다. 그에 따라 선택하십시오.


Connection Methods Options 


이 경우 응용 프로그램 연결 섹션을 선택하십시오.


이제 다음 단계에서 사용할 데이터베이스 링크를 얻게 됩니다.


Connection String Output 


데이터베이스가 준비되었습니다. 이제 프로젝트에 추가해야 합니다.


프로젝트 폴더 내에 config라는 다른 폴더를 작성하고 default.json 및 db.js라는 두 개의 파일을 작성하십시오. 다음 코드를 추가하십시오.


// default.json

{
  "mongoURI":
    "mongodb+srv://mern123:<password>@mernatoz-9kdpd.mongodb.net/test?retryWrites=true&w=majority"
}
 /* Replace <password> with your database password */

/* ------------------------------------------------------------------ */
// db.js

const mongoose = require('mongoose');
const config = require('config');
const db = config.get('mongoURI');

const connectDB = async () => {
  try {
    await mongoose.connect(
      db,
      {
        useNewUrlparser: true
      }
    );

    console.log('MongoDB is Connected...');
  } catch (err) {
    console.error(err.message);
    process.exit(1);
  }
};

module.exports = connectDB;

참고 : 데이터베이스에 연결하려면 app.js 파일을 약간 변경해야 합니다. 다음과 같이 app.js를 업데이트하십시오.


// app.js

const express = require('express');
const connectDB = require('./config/db');

const app = express();

// Connect Database
connectDB();

app.get('/', (req, res) => res.send('Hello world!'));

const port = process.env.PORT || 8082;

app.listen(port, () => console.log(`Server running on port ${port}`));

프로젝트를 실행하려면 전역 변수에 config라는 또 다른 종속성 패키지가 필요합니다. 다음 명령을 사용하여 프로젝트에 설치하십시오.


$ npm i config

이제 다음 명령을 사용하여 프로젝트를 실행할 수 있습니다.


$ npm run app

Successfully Connected Server 


지금까지 우리는 바른 길을 가고 있습니다. 데이터베이스가 성공적으로 연결되었습니다. 이제 경로 설정을 완료 한 후 RESTful API를 작성하는 방법을 살펴 보겠습니다.


RESTful APIs 


routes라는 폴더를 만듭니다. 여기에 모든 API를 보유 할 api라는 다른 폴더를 만듭니다.


api 폴더 안에 books.js라는 파일을 만듭니다. 여기서 API 작동 방식을 보여주기 위해 여기에 몇 가지 API를 작성합니다.


이제 다음 코드로 books.js를 업데이트하십시오.


// routes/api/books.js

const express = require('express');
const router = express.Router();

// Load Book model
const Book = require('../../models/Book');

// @route GET api/books/test
// @description tests books route
// @access Public
router.get('/test', (req, res) => res.send('book route testing!'));

// @route GET api/books
// @description Get all books
// @access Public
router.get('/', (req, res) => {
  Book.find()
    .then(books => res.json(books))
    .catch(err => res.status(404).json({ nobooksfound: 'No Books found' }));
});

// @route GET api/books/:id
// @description Get single book by id
// @access Public
router.get('/:id', (req, res) => {
  Book.findById(req.params.id)
    .then(book => res.json(book))
    .catch(err => res.status(404).json({ nobookfound: 'No Book found' }));
});

// @route GET api/books
// @description add/save book
// @access Public
router.post('/', (req, res) => {
  Book.create(req.body)
    .then(book => res.json({ msg: 'Book added successfully' }))
    .catch(err => res.status(400).json({ error: 'Unable to add this book' }));
});

// @route GET api/books/:id
// @description Update book
// @access Public
router.put('/:id', (req, res) => {
  Book.findByIdAndUpdate(req.params.id, req.body)
    .then(book => res.json({ msg: 'Updated successfully' }))
    .catch(err =>
      res.status(400).json({ error: 'Unable to update the Database' })
    );
});

// @route GET api/books/:id
// @description Delete book by id