MongoDB

2023. 12. 13. 21:17Node.js Express

mongoose라는 모듈을 이용하면 MongoDB를 이용 할 수 있다

 

const mongoose = require('mongoose')

const connectDB = (url) => {
  return mongoose.connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
}

module.exports = connectDB​

 

url을 가지고 db를 연결하는 모듈이다

 

const mongoose = require('mongoose');

const dataSchema = new mongoose.Schema({
    title: {
        type:String,
        required:[true, 'Please provide name'],
        minlength: 1,
        maxlength: 100,
    },

    data: {
        type:String,
    },
})

module.exports = mongoose.model('data',dataSchema);

 

사용할 data의 schema를 정의한 모듈이다

 

const Data = require('../models/data')

const db_get = async (req, res) => {
    const datas = await Data.find();
    return res.status(200).render('list',{"datas": datas});
}



const db_post = async (req, res) => {
    const title = req.body.title;
    const data = req.body.data;
    const newData = {"title":title, "data":data};
    await Data.create(newData);
    db_get(req, res)
}

const db_detail = async (req, res) => {
    const id = req.params.id;
    const data = await Data.findById({_id:id});
    return res.status(200).render('detail',{"data":data});
}

const db_delete = async (req, res) => {
    const id = req.params.id;
    await Data.findByIdAndDelete({_id:id});
    db_get(req, res)
}

const db_update = async(req, res) => {
    const id = req.params.id;
    const title = req.body.title;
    const data = req.body.data;
    await Data.findByIdAndUpdate({_id:id},{data:data, title:title});
    db_detail(req, res)
}
module.exports = {db_get, db_post, db_detail, db_delete, db_update};

 

정의한 schema를 이용하여 db를 이용하는 function을 정의한 모듈이다

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

const {db_get, db_post, db_detail, db_delete, db_update} = require('../controllers/db_controller');

router.get('/',db_get).post('/',db_post);
router.route('/:id').get(db_detail)
router.route('/delete/:id').post(db_delete);
router.route('/update/:id').post(db_update);
module.exports = router;

 

각각의 function을 알맞는 route에 배정한 모듈이다

 

const MongoStore = require('connect-mongo');
const connectDB = require('./db/connect');

app.use(session({
  secure: false,
  secret: process.env.SESSION_KEY,
  resave: false,
  saveUninitialized: true,
  store: MongoStore.create({
    mongoUrl: process.env.MONGO_URI,
    dbName: "nodejs",
    ttl : 30*60,
    autoRemove: 'interval',
    autoRemoveInterval : 10
  }),
  cookie: { secure: false , maxAge: 3600000 }
}))

app.use('/db', dbPage);

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

const start = async () => {
  try {
    await connectDB(process.env.MONGO_URI)
    server.listen(port, () =>
      console.log(`Server is listening on port ${port}...`)
    );
  } catch (error) {
    console.log(error);
  }
};

 

'Node.js Express' 카테고리의 다른 글

Session  (0) 2023.12.13
WebSocket  (0) 2023.12.13
CSRF  (0) 2023.12.13
Form Data  (0) 2023.12.13
Node.js express Studying project  (0) 2023.12.11