Nodejs

 

 

A. 몽고 DB 윈도우 설치 및 실행

 

 

 [MongoDB] 윈도우 몽고디비 설치 방법

[MongoDB] 몽고디비 GUI 개발/관리도구 Studio 3T 설치 (Robo 3T)

 

1) 윈도우 설치

Mongodb 설치Permalink

1. Mongodb 홈페이지 접속 후 다운로드Permalink

다운로드 페이지

공식 홈페이지 : https://www.mongodb.com/try/download/community

원하는 버전 선택 후 msi 파일로 다운로드

install

2. 설치파일 실행Permalink

경로를 커스텀 하지 않았다면 C:\Program Files\MongoDB 경로에 설치가 됨.

(선택) 3. 환경변수 설정Permalink

선택사항. 매번 몽고DB 설치 경로(C:\Program Files\MongoDB)로 이동해서 명령어를 날려도 상관 없으면

스킵해도 상관 없음.

어느 경로에서나 몽고DB를 실행하고 싶다면 필요.

내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 환경 변수

Path 변수에 C:\Program Files\MongoDB\Server\ {버전} \bin 추가

Path

4.명령 프롬프트(CMD) 창에서 Mongodb 실행 및 data/db 디렉토리 생성Permalink

실행 -> CMD

3의 환경변수 설정을 했다면 어떤 경로에서나 실행 가능

변수 설정 안했다면 mongodb 설치 경로로 가서 실행 가능

서버 실행Permalink

mongod

서버 접속Permalink

mongo

별 다른 작업 없이 mongod 명령어로 서버 실행 할 경우 아마 Exception이 발생 할 것이다.

error

내용은 Data 경로가 없다는 내용. 쉘에서 mkdir Data/db/ 생성해주든, 해당 경로가서 마우스 우클릭으로 새 폴더 생성해주던 상관 없음.

중요  : 실행 오류시 

다음과 같이 디렉토리를 생성해 준다. C:\Data\db

 

 

5.확인 (웹브라우저)Permalink

웹브라우저에서 http://localhost:27017 접속

It looks like you are trying to access MongoDB over HTTP on the native driver port.

위와 같은 문구가 나온다면 정상.

Mongodb의 기본 포트는 27017

 

 

 

 

2 ) 몽고 DB 클라우드  설치 시

 

https://cloud.mongodb.com/

MongoDB 무료로 사용하기 - MongoDB Atlas

 

 

3) 몽고 DB  툴로 연결  할 경우

 

로컬일 경우 :  mongodb://localhost:27017

클라우드일 경우   :  mongodb+srv://macaronics:<password>@mongo-macaronics.y37mjuf.mongodb.net/test

 

 

몽고DB 연결 참조 :  https://velog.io/@dev_cecy/NODE.JS-MONGO-DB-연동하기-FEAT.-EXPRESS-MONGOOSE

 

 

 

 

4) nodejs 몽고 DB 연결 라이브러리 설치

$ npm install mongoose

 

 

nodejs/mongodbURI.js

const mongodbURI = "mongodb+srv://macaronics:<password>@mongo-macaronics.y37mjuf.mongodb.net/test";
 
module.exports = mongodbURI;

 

 

nodejs/mongodb.js

const express = require('express')
const app = express()
const port = 5000
const mongodbURI = require('./mongodbURI')


const mongoose = require("mongoose");
// MongoDB 연결 1
// '단' 하나의 데이터베이스 연결 시 유효. 
mongoose.connect(
    mongodbURI,
    // MongoDB url
    // {
    //     useNewUrlParser: true,
    //     useUnifiedTopology: true,
    //     useCreateIndex: true,
    //     useFindAndModify: false,

    // }
    // options
    // MongoDB 5 버전부터 useNewUrlParser 옵션을 사용해주지 않으면 에러가 뜹니다.

    //Mongoose 6 사용으로 에러 발생시.
    //useNewUrlParser, useUnifiedTopology,
    //useFindAndModify 및 useCreateIndex는 더 이상 지원되지 않는 옵션입니다.
    //Mongoose 6은 항상 useNewUrlParser, useUnifiedTopology 및 useCreateIndex가 true이고
    // useFindAndModify가 false인 것처럼 작동합니다.코드에서 이러한 옵션을 제거하십시오.
).then(() => console.log("MongoDB Connected...")).catch(err => console.error("에러 :", err));




app.get('/', (req, res) => {
    res.send('Hello World! 안녕하세요.')
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
});

 

연결 테스트 확인

$ node nodejs/mongodb.js 

 

 

 

B. 몽고 DB Session Store 설정

 

connect-mongodb-session

https://www.npmjs.com/package/connect-mongodb-session

 

설치 :

$ npm i connect-mongodb-session

 

var express = require('express');
var session = require('express-session');
var MongoDBStore = require('connect-mongodb-session')(session);

var app = express();
var store = new MongoDBStore({
  uri: 'mongodb://localhost:27017/connect_mongodb_session_test',
  collection: 'mySessions'
});

// Catch errors
store.on('error', function(error) {
  console.log(error);
});

app.use(require('express-session')({
  secret: 'This is a secret',
  cookie: {
    maxAge: 1000 * 60 * 60 * 24 * 7 // 1 week
  },
  store: store,
  // Boilerplate options, see:
  // * https://www.npmjs.com/package/express-session#resave
  // * https://www.npmjs.com/package/express-session#saveuninitialized
  resave: true,
  saveUninitialized: true
}));

app.get('/', function(req, res) {
  res.send('Hello ' + JSON.stringify(req.session));
});

server = app.listen(3000);

 

 

적용하기

app.js

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const nunjucks = require('nunjucks');
const app = express();

const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);
const MongoDBStore = require('connect-mongodb-session')(session);


const FileStore = require('session-file-store')(session);

const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const cookieRouter = require('./routes/cookies/index');
const sessionRouter = require('./routes/session/index');


// app.use(session({
//   secret: 'secret key',	// 암호화
//   resave: false,
//   saveUninitialized: true,
//   cookie: {
//     httpOnly: true,
//   },
//   //store: new FileStore() // 세션 객체에 세션스토어를 적용
// }));

// session DB 저장 방식 - session 테이블이 자동 생성되고  세션이 passport의해 저장 된다.
// app.use(session({
//   secret: '12312dajfj23rj2po4$#%@#',
//   resave: false,
//   saveUninitialized: true,
//   store: new MySQLStore({
//     host: 'localhost',
//     port: 3306,
//     user: 'opentutorials',
//     password: '1111',
//     database: 'opentutorials'
//   })
// }));


//몽고 MongoDBStore  설정
app.use(session({
  secret: '12312dajfj23rj2po4$#%@#',
  resave: false,
  saveUninitialized: true,
  store: new MongoDBStore({
    uri: 'mongodb://localhost:27017/take-ndoejs',
    collection: 'sessionStore'
  })
}));

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

잔고기 가시 세다 , 몸은 작아도 속은 올차다는 뜻.

댓글 ( 4)

댓글 남기기

작성