Notice
Recent Posts
Archives
Today
Total
«   2024/06   »
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
Recent Comments
관리 메뉴

우당탕탕 개발일지

NodeJS Express + MongoDB 웹서버 (1) 본문

Nodejs

NodeJS Express + MongoDB 웹서버 (1)

devchop 2024. 5. 12. 18:45

 

1. nodeJs 다운로드 받기. 다운로드를 받은 뒤 아래 명령어를 통해 정상적으로 다운되었는지 확인한다.

node -v

 

 

2. 프로젝트를 하나 만들고, VSCode를 켠다. 터미널에서 npm 초기화및 express를 설치한다.

npm init
npm install express --save //express 설치

##실행명령어는 다음처럼하면된다.
npm run <명령어>

--save 옵션은 package.json에 표시되어서 다른사람도 확인할 수 있게끔 하는 옵션이다. npm 대신 yarn을 사용해도 무관하다.

 

3. MongoDB 사이트 접속, 로그인 및 클러스터 생성.

클러스터를 생성하면 아래와 같은 URI값을 주는데 , 스크립트 안에서 이 URI를 통해 몽고디비와 연결할 수 있다. 

mongodb+srv://[계정이름]:[비밀번호]@[클러스터이름].~~.mongodb.net/.....

 

4. 그 외 필요한 라이브러리들을 다운받는다.

npm install mongoose --save ##몽구스다운로드받기

npm install body-parser --save ##json형식으로 파싱하기 위해 필요
npm install bcrypt --save ##비밀번호 암호화에 사용
npm install jsonwebtoken --save ## 로그인 인증 토큰을생성하기 위해 사용
npm install cookie-parser --save ##토큰을 쿠키에 저장하기 위해 사용

##파일이 수정되었을 때 바로 반영되도록하는 nodemon. 
##개발에서만 사용하기에 --dev옵션을 주었음.  product버전에서 사용되지 않음
npm install nodemon --save-dev

 

5. index.js 파일 생성하기

index.js는 프로그램이 실행 될 때 가장 먼저 동작하는 스크립트이다.

const express = require("express");
const mongoose = require("mongoose");
const config = require("./config/key");

const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const app = express();
const port = 4000;

const users = require("./src/users/users.main");

##connect mongoDB
mongoose
  .connect(config.mongoURI)
  .then(() => console.log("MongoDB Connected.."))
  .catch((err) => console.log(err));

##application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

##application/json
app.use(bodyParser.json());
app.use(cookieParser());

## 이런식으로 동작한다.
app.get("/", (req, res) => {
  res.send("Hello World!");
});

##express router

const userRouter = require("./src/users/users.main");
app.use("/api/users", userRouter);

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

 

moongoose.connect() 에서 사용되는 config.mongoURI 는 (3)에서 발급받은 URI이다.  config 파일에 따로 저장되어있다. 계정정보와 비밀번호 정보가 들어있는 민감한 데이터들은 config 파일에 저장하고, gitignore을 통하여 외부에 노출되지 않도록 한다. 

 

config 파일은 3개로 이루어져있다. 개발용과 배포용 값이 분리되어야하는 경우가 많기 때문이다. 우선 key.js를보자

##key.js

if (process.env.MODE_ENV === "production") {
  module.exports = require("./prod");
} else {
  module.exports = require("./dev");
}

key.js 는 프로그램이 실행되는 환경이 개발모드인지 배포모드인지에 따라 알맞는 파일을 찾아갈 수 있도록 하는 스크립트이다. 실제 데이터는 prod.js 와 dev.js 에 들어있다. 실제 데이터를 저장하는 prod.js 와 dev.js는 아래와 같은 형식으로 저장한다.

 

## dev.js

module.exports = {
  mongoURI:
    ".....",
};

 

 

4. Express Router 를 이용

userRouter를 설정하는 부분이다. 실제 api내용을 구현하는 것은 user, board 등으로 많은 종류가 있다. 종류별로 스크립트를 나누어 관리하기 위해 express router를 사용하면 유지보수가 용이하다.

내 프로젝트의 경우 src/users 폴더 안에 users와 관련된 api들이 정의되어있다. 이를 index.js에서 모두 모아서 app.use()를 호출해야한다. 다음게시에서는 user와 관련된 api를 구현하도록 하자

 

'Nodejs' 카테고리의 다른 글

NodeJS Express + MongoDB 웹서버 (2)  (0) 2024.05.12