일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 블로그만들기
- 중국어
- 파이썬
- java
- Android Studio
- 개발
- react
- nodejs
- 입문
- androidstudio
- Node js
- es6
- 블로그 만들기
- express
- 자바스크립트
- 리액트
- javascript
- Android
- 자바
- MernStack
- mongodb
- 장고
- 안드로이드스튜디오
- 안드로이드
- Django
- mern Stack
- 중국어입문
- 안드로이드 스튜디오
- PYTHON
- 알고리즘
- Today
- Total
City At Night
[MernStack] Blog 만들기 4. MongoDB 설정 및 연결(내용 추가 수정됨) 본문
1. MongoDB 기본적인 셋팅
MongoDB 홈페이지 접속 후 Start free를 눌러 회원가입 후 로그인을 해준다.
그 다음 프리티어로 선택을 하고 클러스터를 생성한다.(가장 가까운 지역 일본을 선택한다)
그 다음 좌측 Network Access로 이동하여
Add IP Address를 눌러 나의 아이피 주소를 등록한다.
Add current ip adress를 눌러 자신의 아이피를 입력시킨다.
나는 이미 내 아이피를 등록을 하여 current Ip Address가 안보이지만 처음인 사람들은 보이니 클릭한다.
Network Access는 내가 등록한 아이피에서만 데이터베이스에 접근 할 수 있게 한다
집이나 사무실에서만 한다면 추가를 해주고 Comment로 그 아이피주소의 명칭을 넣어주자.
다시 좌측 메뉴에서 클러스터로 이동 하여 Connect를 눌러준다.
UserName과 Password 를 작성하고
Choose a connection method를 누르면 다음과 같은 화면이 나오는데 Connect your application을 선택한다.
이제 2번에 있는 코드를 복사한다.
미리 설명하면, <password>에는 내가 설정한 password를 myFirstDatabase에는 내 DB이름을 넣는다.
password는 내가 설정한 pasword이며, myFirstDatabase는 내가 지정하면 된다.
여기까지 MongoDB의 기본적인 구축은 끝이다. 이제 연결만 시키자.
2. 내 MongoDB URI 등록
server 폴더 밖에 .env 라는 파일을 만들어주고
MONGO_URI = "mongodb+srv://dbAdmin:admin1234@base.c8auh.mongodb.net/myBlogDB?retryWrites=true&w=majority"
MongoDB클러스터에서 복사한 URI를 붙여 넣어 준다음 password와 db이름을 수정해줍니다.
비밀번호는 절대 노출해서는 안되기때문에 .env라는 파일에 따로 설정해두는 겁니다.
(패스워드인 admin1234와 DB이름인 myBlogDB는 하나의 예시입니다.)
3. .env 에 설정한 DB URI를 서버와 연결하기
server폴더 아래에 config라는 폴더를 만들어주고 index.js 파일을 만들어준다.
import dotenv from "dotenv";
dotenv.config();
export default{
MONGO_URI : process.env.MONGO_URI,
}
.evn에서 적었던 MONGO_URI를 변수로 불러오고 있기 때문에 우리는 실제 URI를 알 수 가 없으므로 보안측면에서 좋다.
그럼 MONGO_URI 역할은 config/inex.js에서 export default로 모듈화한 {MONGO_URI}가 하고 있다.
실제로 mongoDB를 연결하기 위해 app.js에서 mong_uri를 추가해야하는데 위에서 모듈화해버린 {MONGO_URI}를 가져다 쓰면 된다.
4. app.js에 mongo_db 붙이기
import express from 'express';
✓import mongoose from "mongoose";
✓import config from './config';
const app = express()
✓const {MONGO_URI} = config
✓mongoose.connect(MONGO_URI,{
useNewUrlParser : true,
useUnifiedTopology: true,
✓}).then( ()=> console.log("MongoDB connecting Success!!!")).catch((e)=> console.log(e));
app.get('/')
export default app;
✓는 추가된 코드이다.
mongoDB를 사용하기때문에 mongoose를 불러오고
위 3번에서 설명을 다 했듯이 DB URI를 불러오기 위해서 .config를 불러왔다.
mongoose.connect는 MONGO_URI를 연결하고 옵션값으로 useNew~,useUnified~ 를 true로 주고
연결이 되면 "success!"라는 로그를 띄운다. 아니면 error 메시지를 남긴다.
(node:9662) DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version.
MongoDB connecting Success!!!
DB가 잘 붙은걸 볼 수 있다.
다음 버전부터 DB Class가 삭제된다는 경고를 주고 있다.
models/post.js 에
mongoose.set('useCreateIndex', true)
를 추가해주면 사라진다.
이제 나중에 회원가입 기능 ,글 쓰기 기능이 완성되어 회원가입을 하거나 글을 쓰면 mongo DB 클러스터에서 확인할 수 있다.
추가된 내용 ++
보안적인 측면을 위한 라이브러리와 외부자원을 요청할 수 있는 라이브러리, 로그를 관리하는 라이브러리를 추가하겠습니다.
첫번째 포스팅에 대략적으로 설명이 되어있지만 다시 추가 설명 하겠다.
보안척인 측면을 위한 라이브러리
hpp,helmet
외부자원 요청 라이브러리
cors : 도메인, 프로토콜, 포트가 다른 서버의 자원을 요청할 수 있게 하는것.
CORS 같은 상황이 발생하면 외부 서버에 요청한 데이터를 브라우저에서 보안 목적을 차단한다. 때문에 서버나 클라이어트 단에서 특정 도메인 혹은 모든 도메인을 허용하도록 설정하여 해결해야 함.
로그 관리 라이브러리
morgan: morgan은 nodeJS 에서 사용되는 로그 관리를 위한 미들웨어 이다.
로그 관리가 쉽다.
--------------------------수정(추가) 2021.03.14------------------------------------
<app.js>
hpp,helmep,cors,morgan을 사용하기위해 import 해준다.
import hpp from 'hpp';;
import helmet from 'helmet';
import cors from 'cors'
import morgan from 'morgan'
----------------------------------------------------------------------------------------------
app.use(hpp())
app.use(helmet())
app.use(cors({origin : true, credentials : true}))
app.use(morgan("dev"))
const {MONGO_URI} 밑에 추가해준다.
그 다음
app.use(express.json())
이 코드는 json형식으로 자원을 보내거나 받는다고 지정하는것이다.
python과 android에서는 내가 하나하나 파싱해서 사용했는데.. .여긴 아닌가보다..너무 간단한데..?
다음 포스팅에서는 라우팅이라는 것을 해볼 것이다.
사용자가 서버에게 요청을 하면 그 요청에 맞는 뷰를 보여주는것이다.
'MernStack' 카테고리의 다른 글
[MernStack] Blog 만들기 6. Poster Router 잘 되는지 테스트 (0) | 2021.03.14 |
---|---|
[MernStack] Blog 만들기 5. Routing-Poster기능 (추가 수정) (0) | 2021.03.12 |
[MernStack] Blog 만들기 3. MongoDB 모델링 (0) | 2021.03.04 |
[MernStack] Blog 만들기 2. Express 서버 구동 (0) | 2021.03.02 |
(MernStack) Blog 만들기 1. 실습환경 준비 (BackEnd) (0) | 2021.03.02 |