Node.js와 함께 MongoDB 사용.
소개
서버로 작업할 때 우리는 항상 데이터베이스를 사용하여 데이터를 저장하고 검색해야 합니다. 많은 서버측 언어와 데이터베이스가 있습니다. 이 기사에서는 Node.js와 함께 MongoDB를 사용하는 방법을 배웁니다.
MongoDB는 비관계형 데이터베이스입니다. 문서 중심의 스토리지 시스템입니다. 관계형 데이터베이스(MYSQL, PostgreSQL)에서 사용되는 기존 테이블 및 행 형식 대신 JSON 형식으로 데이터를 저장하고 검색합니다.
목표
이 가이드는 다음 사용 사례에 중점을 둡니다.
전제 조건
시작하기
Node.js와 함께 MongoDB를 사용하는 방법을 시연하기 위해 간단한 책 목록을 만들 것입니다. 인벤토리에서 책을 추가, 가져오기, 편집 및 제거하는 방법을 배웁니다.
코드 편집기에 다음 폴더와 파일이 준비되어 있는지 확인하겠습니다.
종속성 설치
참고 사항:
Mongoose is a library that creates a connection between MongoDB and an Express based application.
Dotenv is used to load data from our
config.env
file into the environment so we can access it usingprocess.env
.
계속해서 터미널에서 아래 명령을 실행하여 이 프로젝트에 필요한 종속성을 설치합니다.
npm install express
npm install mongoose
npm install dotenv
MongoDB 연결 문자열 검색
Node.js 애플리케이션에서 데이터베이스에 연결하려면 MongoDB Atlasaccount에 로그인하십시오.
연결 문자열을 검색하려면 다음의 간단한 단계를 따르십시오.
connect
를 클릭합니다. Connect to your application
옵션을 선택합니다. 자세히 알아보기
이 시점에서 종속성과 연결 문자열을 사용할 준비가 되어 있어야 합니다.
당분간
server.js
파일은 다음과 같아야 합니다.const express = require('express')
const dotenv = require('dotenv')
const path = require('path')
const app = express()
dotenv.config({path: './config/config.env'})
app.use(express.json())
const port = process.env.port
app.listen(port, () => {
console.log(`port ${port} connected...`)
})
config.env
파일을 예로 들어 보겠습니다. 이 파일은 모든 환경 변수를 포함합니다.port = 8080
mongo_uri = mongodb+srv://mongodb-template:<password>@cluster0.8lmmv.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
코드를
config.env
파일에 복사한 후 서버를 다시 시작하십시오.Replace
<password>
with the actual password of the database
다음 단계에서는
db.js
파일에서 MongoDB 연결을 생성해 보겠습니다.const mongoose = require('mongoose')
const connectDb = async () => {
const conn = await mongoose.connect(process.env.mongo_uri, {
useNewUrlParser: true,
useUnifiedTopology: true
})
console.log(`mongodb connected: ${conn.connection.host}`)
}
module.exports = connectDb
이제 데이터베이스 연결이 준비되어 있으므로
server.js
파일을 업데이트합니다.const express = require('express')
const dotenv = require('dotenv')
const connectDb = require('./database/db')
const app = express()
dotenv.config({path:'./config/config.env'})
app.use(express.json())
//database connection
connectDb()
const port = process.env.port
app.listen(port, () => {
console.log(`port ${port} connected...`)
})
스키마 생성
MongoDB Schema는 데이터베이스 구조의 모양과 저장할 수 있는 항목을 결정하는 데 도움이 되는 JSON 개체입니다.
설정
BookSchema.js
:const mongoose = require('mongoose')
const BookSchema = new mongoose.Schema({
title:{
type:String,
required:true,
unique:true
},
author:{
type:String,
required:true,
unique:true
},
isbn:{
type:String,
unique:true
}
})
module.exports = mongoose.model('BookSchema', BookSchema)
노선
book.js
파일에서 시작하여 router
및 BookSchema
모듈을 가져옵니다.const router = require('express').Router()
const Book = require('../model/BookSchema')
book.js
파일에는 다음 요청이 포함됩니다.POST 요청
router.post('/', async (req,res) => {
const { title, author, isbn } = req.body
const newBook = await Book.create({ title, author, isbn })
res.status(201).json({
success:true,
data:newBook
})
})
위의 코드는 책의
name, author, and isbn
를 저장합니다.GET 요청
There will be two variants of the
GET
request. One willGET
all books while the other willGET
just a particular book.
router.get('/', async (req,res) => {
const books = await Book.find()
res.status(200).json({
success:true,
data: books,
num: books.length
})
})
router.get('/:id', async (req,res) => {
const book = await Book.findById(req.params.id)
res.status(200).json({
success:true,
data: book
})
})
PUT 요청
router.put('/:id', async (req,res) => {
let book = await Book.findById(req.params.id)
book = await Book.findByIdAndUpdate(req.params.id, {$set:req.body}, {
new:true,
runValidator:false
})
res.status(200).json({
success:true,
data: book
})
})
삭제 요청
This operation will also have two variants in case we want to DELETE one or all entries from the database.
router.delete('/:id', async (req,res) => {
await Book.findByIdAndRemove(req.params.id)
res.status(200).json({
success:true,
data: 'book deleted'
})
})
router.delete('/', async (req,res) => {
await Book.deleteMany()
res.status(200).json({
success:true,
data: 'All books deleted'
})
})
마지막으로 라우터를 내보냅니다.
module.exports = router
심호흡을 하세요. 이제 프로젝트가 거의 완료되었습니다.
server.js
파일은 router
모듈로 업데이트되어야 합니다.const express = require('express')
const dotenv = require('dotenv')
const connectDb = require('./database/db')
const app = express()
dotenv.config({path:'./config/config.env'})
app.use(express.json())
//database connection
connectDb()
//mount the route
const bookRoute = require('./routes/book')
app.use('/api/v1/book', bookRoute)
const port = process.env.port
app.listen(port, () => {
console.log(`port ${port} connected...`)
})
결론
이 기사에서는 간단한 프로젝트를 생성하여 MongoDB를 Node.js와 함께 사용하는 방법을 배웠습니다. 이 자습서를 쉽게 탐색할 수 있기를 바랍니다.
github의 전체 프로젝트 링크: https://github.com/backendbro/mongodb_template
행복한 코딩 😀
학점
Reference
이 문제에 관하여(Node.js와 함께 MongoDB 사용.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/backendbro/using-mongodb-with-nodejs-175l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)