TIL 25 | MongoDB

daekuenhan·2021년 9월 14일
0
post-thumbnail

MongoDB 장점.

  • 처음 다룰 때 어려운 셋팅작업이 필요하지 않음 (스키마 생성 등 필요없음)
  • NoSQL의 한 종류로써 어려운 SQL 언어 안배워도 됨
  • 복잡한 자료형 몰라도 됨
  • 평생 무료 호스팅해주는 곳이 있음

MongoDB 셋팅

  1. MongoDB Atlas 가입 후 호스팅받기
  2. DB 접속하는 URL 찾아오기.

Server.js에서 DB 접속하려면 ?
1. 터미널 켜서 npm install mongodb 입력해서 라이브러리 설치.
2. 다음 코드 추가 하고,

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

3.MongoClient.connect('DB 접속하는 URL', callback) 입력.
4. 그리고 그 안에 app.listen(PORT, callback) 입력.

 MongoClient.connect('DB 접속하는 URL', (error, client) => {
  if (error) return console.log(error);
   //MongoClient.connect() MongoDB 연결해주시구요
   // 끝나면 콜백함수 안에꺼 실행해 주세요 ( 서버 띄워주세요 ) 라는 의미임.
  //서버띄우는 코드 여기로 옮기기
  app.listen('8080', function(){
    console.log('listening on 8080')
  });
})

Database에 자료 저장하는 법 (한줄이면 끝)

MongoDB 함수 에러처리 방법

이런식으로 에러 처리함. if문쓰고 안에 띄울 메세지 리턴.

MongoClient.connect('아까 챙겨온 DB 접속URL',
    (error, client)=>{
        if(error) {
            return console.log(error)
        }
	};

MongoDB에서 database 이름은 todoapp // collection 이름은 post 라고 명명.

database와 collection의 차이는...

database는 하나의 폴더, collection은 하나의 엑셀파일이라고 생각하면 딱 맞다.

자료저장 하는 코드

// 어떤 데이터베이스에 데이터를 저장할 것인지를 명시를 해줘야함

let db; // 변수하나 선언해주고
MongoClient.connect('아까 챙겨온 DB 접속URL',
    (error, client)=>{
        if(error) {
            return console.log(error)
        }
  
  db = client.db('todoapp'); // todoapp 이라는 database에 연결하겠다는 뜻.
  db.collection('post').insertOne({title: req.body.title , date: req.body.date},
                                  (error, result) => {
                	console.log('저장완료');
            }); 
 // collection('post')는 apptodo 안에 있는 post 파일에 연결하는 의미.
        });  //insertOne(저장할데이터 , callback) 메소드를 사용하여 데이터 저장( obj 자료형으로 )
  
  app.listen('8080', function(){
    console.log('listening on 8080')
  });
	};


이런식으로 저장됨.
id는 꼭 적어주는게 좋지만, 따로 적지 않을시 강제로 id가 부여됨.

HTML에 DB데이터 꽂아넣는 법 1 (EJS)

npm install ejs로 설치부터 해준다.
list.html 의 확장자 명을 list.ejs로 바꿔준다.
ex) list.ejs 처럼 ejs파일은 views 폴더에 항상 위치해야한다.
resp.render() 를 이용해서 보내준다.

app.get('/list', (req, resp) => {
    resp.render('list.ejs');
});

app.get('/list', (req, resp) => {
    // DB에 저장된 post라는 collection안의 데이터를 꺼내주세요
    db.collection('post').find().toArray((error, result) => {
        console.log(result);
        resp.render('list.ejs',{posts: result}); 
      // 찾은걸 ejs 파일에 집어 넣어 주세요.
    }); 
});

<% %>
<%= %>
이게 ejs 문법임.
반복문, if문 등을 이렇게 사용함.

<% for (let i =0; i<posts.length; i++){ %>
      <h4>할일 제목 : <%= posts[i].title  %> </h4>
    <p>할일 마감날짜 : <%= posts[i].date  %> </p>
    <% }  %>

웹사이트 기능만들기 기본

1.서버로 데이터 전송할 수 있는 UI 만들어주고
2.서버에서 원하는대로 정보를 처리해주면 됨.

배운것을 정리하고 복기하기 위해서 만든 게시물 입니다

profile
새로운 시작을 준비하는 놈

0개의 댓글