MongoDB 연동

jaegeunsong97·2023년 9월 26일
0

Node.js

목록 보기
7/7

몽고DB

{
  "name": "lee",
  "age": 25,
  "email": "lee@naver.com"
}

  • 몽고DB : 도큐먼트 지향 데이터베이스
    • 도큐먼트 : XML, JSON 같은 형식의 데이터를 저장하는 것
    • RDBMS보다 유연 -> 데이터 구조 알 수 없거나, 변경 및 확장이 있는 경우 사용
    • JSON 형태의 동적 스키마형 도큐먼트 사용 (기본 데이터 : 도큐먼트)
    • 도큐먼트 * N -> 컬렉션 : RDB의 테이블과 비슷한 개념

몽고 DB 설치 생략

몽고 DB + NodeJS

connect 클릭

MongoDB for VS Code 클릭

그대로 따라하기

먼저 nodeJS에 라이브러리 설치, server.js 파일이 있는 곳에서

npm install mongodb --save

  • server.js, 기존
const mongoclient = require('mongodb').MongoClient;
const url = 'mongodb+srv://admin:1234@cluster0.s8uqhla.mongodb.net/';
mongoclient.connect(url).then(client => {
     console.log('몽고 DB 접속 성공');
});
.
.
.
// mysql 주석처리

npm run server.js

  • 코드 수정
const mongoclient = require('mongodb').MongoClient;
const url = 'mongodb+srv://admin:1234@cluster0.s8uqhla.mongodb.net/';
mongoclient.connect(url).
then(client => {
  	 // 잘라내서 여기에 붙이기
     app.listen(8080, function() {
          console.log('포트 8080으로 대기중............');
     });
}).catch(err => {
     console.log(err);
});
.
.
.
// app.listen() 코드 잘라내기

이유 : 서버가 실행되기 전에 몽고 DB에 먼저 접속 시도하고, 성공한 후 서버의 포트를 오픈하는 것이 합리적이기 때문에

  • 컬력션에 접근하여 데이터 출력
    • 몽고DB에 데이터 넣기

const mongoclient = require('mongodb').MongoClient;
const url = 'mongodb+srv://admin:1234@cluster0.s8uqhla.mongodb.net/';

let mydb; //**

mongoclient.connect(url).then((client) => {
    mydb = client.db('myboard'); //**
  	// 모든 데이터를 읽을 때 find()함수 사용
    mydb.collection('post').find().toArray().then(result => { //**
      	console.log(result);
    })

    app.listen(8080, function() { //**
      	console.log('포트 8080으로 서버 대기중.........');
    });
}).catch(err => {
 	console.log(err);
});

// Node.js - MySQL 연동코드
// var mysql = require('mysql');
// var conn = mysql.createConnection({
//      host: 'localhost',
//      user: 'root',
//      password: 'abc0701!!',
//      database: 'myboard'
// });

// conn.connect();

//
const express = require('express'); // express 라이브러리 사용해서 express 객체 생성
const app = express(); // express 사용해서 새로운 app 객체 생성, app : 서버 객체라고 생각

app.get('/book', function(req, res) {
     res.send('도서 목록 관련 페이지입니다. ');
});

app.get('/', function(req, res) {
     res.sendFile(__dirname + '/index.html'); //__dirname : 현재 디렉토리 
});

app.get('/list', function(req, res) {
     conn.query("select * from post", function(err, rows, fields) {
          if (err) throw err;
          console.log(rows);
     });
});
  • /list 데이터 읽기, 최종코드
// Mongo + NodeJS
const mongoclient = require("mongodb").MongoClient;
const url = 'mongodb+srv://admin:1234@cluster0.s8uqhla.mongodb.net/';
let mydb;

mongoclient.connect(url).then((client) => {
    mydb = client.db("myboard");
    app.listen(8080, function () {
          console.log("포트 8080으로 서버 대기중 ... ");
    });
}).catch((err) => {
    console.log(err);
});

const express = require("express");
const app = express();

app.get("/book", function (req, res) {
     res.send("도서 목록 관련 페이지입니다.");
});

app.get("/", function (req, res) {
     res.sendFile(__dirname + "/index.html");
});

app.get("/list", function (req, res) {
   	 // /list 요청시에만 발동 
     mydb.collection("post").find().toArray().then((result) => {
          console.log(result);
     });
});
profile
현재 블로그 : https://jasonsong97.tistory.com/

0개의 댓글