POMOTODO : DB

2022. 1. 5. 19:23프로그래밍/개인프로젝트

POMOTODO를 만들면서 작성한 코드를 복습하기 위해 작성하는 글입니다.

 

 

POMOTODO.kr

 

 

What is POMOTODO?

 


 

1. MongoDB에 가입하고 컬렉션을 생성

 

2. CONNECT 버튼 -> Connect Your Application - Select your driver and version에서 node.js확인하고  아래의 url을 복사

 

3. 터미널에서 몽고db 설치 (npm install mongodb)

 

4. server.js 상단에 몽고디비 첨부

const MongoClient = require('mongodb').MongoClient;

 

5. server.js에 몽고디비 연결코드작성

 MongoClient.connect('복사한 URL', function(err, client){
  if (err) return console.log(err);
  
  //서버에 사용되는 코드 여기에 작성 
  
  app.listen('5501', function(){
    console.log('5501포트 접속성공')
  });
})

복사한 URL은 대략 이렇게 생겼고 빨간글씨로 표시한 부분은 각자 계정에 맞게 변경

mongodb+srv://db접속용아이디:db접속용비밀번호@cluster0.l9rep.mongodb.net/db이름?retryWrites=true&w=majority

 

안된다면 체크할 사항

- 오타확인

- 빨간글씨 확인

- 디비생성시 network access 허용한 ip에서 접속하고 있는지

- app.listen코드 위치확인

 

6. db통신코드

let db;
 MongoClient.connect('복사한 URL', function(err, client){
  if (err) return console.log(err);
  
  db = client.db('db이름');
  //서버에 사용되는 코드 여기에 작성 
  
  app.listen('5501', function(){
    console.log('5501포트 접속성공')
  });
})

7. 자료 조회/ 추가 / 수정 / 삭제 

//db조회 예시

db.collection('컬렉션명').findOne({'조건':'값'}, function(err, result){
	 console.log(result); 
});

findOne대신 insertOne, updateOne, deleteOne등을 넣어서 추가/ 수정/ 삭제 를 할 수 있다 

//실제 사용한 코드 예시
    app.get('/',homeLoginCheck,function(req, res){
        // pomodoro 기록 출력하는 코드
        db.collection('pomodoro').findOne({id:req.user.id}, function(err, pomodoroResult){
            pomoResult = pomodoroResult.contentHTML;

            db.collection('todolist').findOne({id : req.user.id}, function(err, todolistResult){
                todoResult = todolistResult.todoListHTML;

                db.collection('not-todolist').findOne({id : req.user.id}, function(err, nottodolistResult){
                    notTodoResult = nottodolistResult.notTodoListHTML;

                    //record컬렉션을 조회해서 없으면 만들어주는 코드
                    db.collection('pomodoro-record').findOne({ id: req.user.id, 'yyyymmdd' : yyyymmdd() }, function (err, pomoRecCheck) {
                        if(pomoRecCheck==null){
                            db.collection('pomodoro-record').insertOne({ 'id' : req.user.id, 'yyyymmdd' : yyyymmdd() ,'pomoRecord' : '' }, function(err, result){
                            })
                        }
                    })
                    db.collection('todolist-record').findOne({ id: req.user.id, 'yyyymmdd' : yyyymmdd() }, function (err, todoRecCheck) {
                        if(todoRecCheck==null){
                            db.collection('todolist-record').insertOne({ 'id' : req.user.id, 'yyyymmdd' : yyyymmdd() ,'todoRecord' : '' }, function(err, result){
                            })
                        }
                    })
                    db.collection('not-todolist-record').findOne({ id: req.user.id, 'yyyymmdd' : yyyymmdd() }, function (err, notTodoRecCheck) {
                        if(notTodoRecCheck==null){
                            db.collection('not-todolist-record').insertOne({ 'id' : req.user.id, 'yyyymmdd' : yyyymmdd() ,'notTodoRecord' : '' }, function(err, result){
                            })
                        }
                    })
                    res.render('POMOTODO.ejs', { posts : req.user.id, pomodoroRecord : pomoResult, todoListRecord : todoResult, notTodoListRecord : notTodoResult}); 
                })
            })
        })
    });