Javascript/nodejs

[Node.js]Mongoose 사용 예시

뉴벡엔드 2023. 12. 26. 01:03

1. mongoose 설치

 

npm install mongoose 

 

 

2. MongoDB연결

 

server.js

const mongoose      = require('mongoose')
mongoose.connect('mongodb://localhost:27017/testdb') 
const db = mongoose.connection
 
db.on('error', (err) => {
    console.log(err)
})

db.once('open', () =>{
    console.log('DB Connection success')
})

 

 

3. schema 만들기

 

Blog.js

 
const mongoose         = require('mongoose')
const Schema           = mongoose.Schema   // const {Schema}         = mongoose
 
const blogSchema = new Schema({
    title: String, // {type: String}
    author: String,
    body: String,
    date: { type: Date, default: Date.now },
 
  }, {timestamps : true})
 
 
module.exports = mongoose.model('Blog', blogSchema )
 

 

 

mongoose.model('Blog', blogSchema )

첫번째 인자로 Colletion을 생성(소문자로 바꾸고 복수형이 컬렉션명이됨) 

 

 

기본적으로 MongoDB 는 _id 프로퍼티를 스키마에 자동생성(ObjectId)

ex)

 

createdAt, updateAt 은 timestamps : true를 추가해서 나오는 것

 

4. Controller 만들기

 

BlogController.js

const Blog = require('../models/Blog')

// Show the list of blogs
const index = (req, res, next) => {
    Blog.find()
    .then(response => {
        res.json({
            response
        })
    })
    .catch(error => {
        res.json({
            message: 'Error!'
        })
    })
}
 
// add new blog
const addBlog = (req, res, next) => {
    let blog = new Blog({
        title : req.body.title,
        author : req.body.author,
        body: req.body.body,
    })
    blog.save()
    .then(response => {
        res.json({
            message: 'BlogAdded Succecssfully'
        })
    })
    .catch(error => {
        res.json({
            message: 'Error!'
        })
    })
}
 
module.exports = {  index,  addBlog }

 

 

5. routes 만들기

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

const BlogController       = require('../controllers/BlogController')

router.get('/', BlogController.index)
router.post('/addBlog', BlogController.addBlog)

module.exports = router

 

 

6. server.js 수정

 

const mongoose      = require('mongoose')
mongoose.connect('mongodb://localhost:27017/testdb') 
const db = mongoose.connection
 
db.on('error', (err) => {
    console.log(err)
})

db.once('open', () =>{
    console.log('DB Connection success')
})
 
app.use('/api/blog', BlogRoute

 

마지막에 추가

 

 

7. postman으로 테스트

 

데이터 삽입

 

출력

 

 

 

 

 

 

 

 

 

전체코드

 

server.js

mongoose.connect('mongodb://localhost:27017/testdb')
const db = mongoose.connection

db.on('error', (err) => {
    console.log(err)
})

db.once('open', () =>{
    console.log('Database Connection Established')
})

const app = express()
 
app.use('/api/blog', BlogRoute)

 

 

Blog.js

const mongoose         = require('mongoose')
const Schema           = mongoose.Schema   // const {Schema}         = mongoose
 
const blogSchema = new Schema({
    title: String, // {type: String}
    author: String,
    body: String,
    date: { type: Date, default: Date.now },
  }, {timestamps : true})
 

module.exports = mongoose.model('Blog', blogSchema )

 

BlogController.js

const Blog = require('../models/Blog')

// Show the list
const index = (req, res, next) => {
    Blog.find()
    .then(response => {
        res.json({
            response
        })
    })
    .catch(error => {
        res.json({
            message: 'Error!'
        })
    })
}

// add 
const addBlog = (req, res, next) => {
    let blog = new Blog({
        title : req.body.title,
        author : req.body.author,
        body: req.body.body,
    })
    blog.save()
    .then(response => {
        res.json({
            message: 'Added Succecssfully'
        })
    })
    .catch(error => {
        res.json({
            message: 'Error!'
        })
    })
}


module.exports = {
    index,addBlog
}

 

blog.js(routes)

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

const BlogController       = require('../controllers/BlogController')

router.get('/', BlogController.index)
router.post('/show', BlogController.show)
router.post('/addBlog', BlogController.addBlog)

module.exports = router
반응형

'Javascript > nodejs' 카테고리의 다른 글

Mongoose findOne $or이 뭐지?  (0) 2023.12.30
[Node.js] 파일 업로드 (multer, 예제)  (0) 2023.12.30
Robo 3T(Studio 3T) 설치  (0) 2023.12.25
MongoDB 설치  (0) 2023.12.25
Node.js 세팅(express)  (1) 2023.12.23