[node.js] MongoDB 연결
by 무작정 개발2022.04.04(70일 차)
이번에는 node.js에 MongoDB 연결에 대해 정리할 것이다.
mongo DB란?
mongoDB(몽고 DB)는 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는, 문서 모델을 기반으로 하는
NoSQL 데이터베이스이다.
NoSQL? RDBMS(SQL)?
DB에는 크게 2가지 종류가 있는데 바로 SQL와 NoSQL이다.
(1) RDBMS(SQL) - 관계형 DB
RDBMS(SQL)는 관계형 데이터베이스이다.
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하고, 그래서 중간에 열을 하나 추가하기는
어렵지만, 정형화되어 있는 만큼 데이터의 일관성이나 분석에 용이하다.
ex) MS-SQL, My-SQL, OracleDB
(2) No-SQL - 비 관계형 DB
No-SQL는 비 관계형 데이터베이스이다.
대규모의 데이터를 유연하게 처리할 수 있는 강점이 있고, 테이블-칼럼과 같은 스키마 없이,
분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 지연과 처리율이 우수하다.
대규모 확대가 가능한 수평적인 확장성의 특징을 가지고 있다.
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.
ex) MongoDB, Apache Cassandra, Hadoop
SQL | MongoDB |
테이블 | Collection |
열 | 문서 |
컬럼 | 필드 |
기본키 | ObjectId |
MongoDB설치
MongoDB Community Download | MongoDB
나는 5.0.6 버전을 설치하였다.
설치를 할 때 계속 next를 누르다가 상단의 화면이 나오면 체크박스 체크를 해제하고
계속 next를 누른다.
여기까지 하면 설치는 끝났다.
1. 환경변수 설정
새로 만들기 버튼을 클릭해서
C:\Program Files\MongoDB\Server\5.0\bin
를 입력해준다.
환경 변수가 잘 만들어졌으면 확인 버튼을 클릭하면 환경 변수 설정은 끝이다.
2. 기존에 만들었던 node폴더 안에 shopping 폴더 생성
3. shopping 폴더 안에 database 폴더 생성
4. database 폴더 우클릭 -> CmdHere 클릭
5. cmd에 입력 (DB 생성)
mongod -dbpath c:\node\shopping\database -> 이게 DB를 만드는 명령어이다.
명령어를 치면 위의 화면이 나올 것이다.
위의 화면이 보이면 DB가 생성된 것이니 CMD 창을 닫아준다.
그리고 다시 database 폴더를 들어가면 위처럼 파일들이 생성될 것이다.
MongoDB 연결
MongoDB의 기본 port : 27017
app1.js
//Express 기본 모듈
require("dotenv").config();
var express = require("express");
var http = require("http");
var path = require("path");
var serveStatic = require("serve-static");
var expressErrorHandler = require("express-error-handler");
var expressSession = require("express-session");
//몽고DB 모듈
var MongoClient = require("mongodb").MongoClient;
//데이터베이스 객체를 위한 변수
var database; //java에서 conn 만든거랑 같은 의미
//데이터베이스 연결
function connectDB() {
//데이터베이스 연결 정보
var databaseUrl = "mongodb://localhost:27017/shopping";
//연결
MongoClient.connect(databaseUrl,function(err,dbase) { // err는 연결안됬을 때 / dbase는 성공적으로 연결됬을 때
if(err) throw err;
console.log("데이터베이스에 연결되었습니다 : " + databaseUrl);
database = dbase.db("shopping"); // conn만들기 끝
});
}
//익스프레스 객체 생성
var app = express();
app.set("port",process.env.PORT||3000);
app.use(express.urlencoded({extended:false}));
app.use("/public",serveStatic(path.join(__dirname,"public"))); //public (실제)폴더의 이름을 써준것
app.use(expressSession({
secret:"my key",
resave:true,
saveUninitialized:true
}));
var errorHandler = expressErrorHandler({
static : {
"404":"./public/404.html"
}
});
app.use(expressErrorHandler.httpError(404));
app.use(errorHandler);
//Express 서버 시작
http.createServer(app).listen(app.get("port"),function(){ //위에 set으로 넣어둔 port를 get으로 가져온거
console.log("익스프레스 서버 on~~ 포트번호는:" + app.get("port"));
//서버 시작할때 db로 실행해주면 된다.
// - DB연결 함수 호출
connectDB();
});
app1.js를 실행했을 때 위의 콘솔 결과가 나오면 정상적으로 몽고 DB가 연결된 것이다.
[참고]
https://mylko72.gitbooks.io/node-js/content/chapter11/intro.html
https://www.mongodb.com/blog/post/ko-kr/4-common-misperceptions-about-mongodb
'Back-End > node.js' 카테고리의 다른 글
[node.js] mongoose 모듈을 활용한 관계형 DB (0) | 2022.04.05 |
---|---|
[node.js] Robo 3T 설치하기 & MongoDB(몽고DB) (0) | 2022.04.05 |
[node.js] 파일 업로드 (0) | 2022.04.04 |
[node.js] 웹 서버 구축, express 미들웨어 (0) | 2022.04.04 |
[node.js] winston 모듈 (0) | 2022.04.03 |
블로그의 정보
무작정 개발
무작정 개발