MongoDB란

김유찬·2023년 9월 25일

Node.js & MongoDB

목록 보기
3/4
post-thumbnail

MongoDB

MonggoDB는 비관계형 데이터베이스로 좀 더 자유로운 형식으로 데이터를 저장할 수 있다.

또한, 정규화를 하지 않는게 권장사항이라 데이터를 입출력할 때 빠르다는 점이 있지만 대신 데이터의 정확도가 떨어지고 정규화를 해놓지 않아 뭐 하나를 수정, 삭제하고 싶으면 수많은 부분을 수정해야하는 번거로움이 있을 수 있다.

그래서 데이터 입출력이 빨라야하는데 정확도가 그리 좋지 않아도 되는 게시판이나 SNS를 만들 때 많이 사용된다.

그렇다고 이렇게 딱 잘라 나눈다는 의미가 아니라 그런 경향이 있다라는 말.

서버와 연결

npm install mongodb@5

mongodb 라이브러리를 설치해준다.

const { MongoClient } = require('mongodb')

let db
const url = 'mongodb사이트에 있던 님들의 접속 URL'
new MongoClient(url).connect().then((client)=>{
  console.log('DB연결성공')
  db = client.db('forum')

  app.listen(8080, () => {
    console.log('http://localhost:8080 에서 서버 실행중')
  })

}).catch((err)=>{
  console.log(err)
})

이후 서버파일에 위와 같은 코드를 추가해준다.
간단히 말해 호스팅받은 mongoDB에 접속하고 접속 결과를 db라는 변수에 저장한 것이다.

페이지 방문시 DB 데이터 보여주기

app.get('/list', async (요청, 응답) => {
  let result = await db.collection('컬렉션명').find().toArray()
  응답.send(result[0].title)
})

위 코드처럼 작성하게 되면 유저가 /list 페이지에 방문하게 되면 DB에 있던 첫 번째 title의 data를 보내준다.

이때, await을 사용하는 이유는 자바스크립트가 비동기처리를 하게 될 경우를 제한하기 위해서이다.(await의 코드를 먼저 실행하고 다음 코드를 실행하게 하기 위함)
그리고 await을 사용하려면 그 전에 async라는 걸 콜백함수 옆에 붙여야 한다.

이외에도 .then()이나 콜백함수를 넣어 작성해도 된다.

※collection에 있는 document를 전부 꺼내고 싶으면

db.collection('컬렉션 명').find().toArray()
profile
eukddan

0개의 댓글