.
├── app.js //서버 열기
├── routes
│ ├── index.js //메인 페이지 관련 미들웨어
│ ├── comments.js //코멘트 관련 미들웨어
│ └── posts.js //노트 관련 미들웨어
├── schemas
│ ├── index.js //몽고DB랑 연결 담당
│ ├── comment.js //코멘트 테이블 스키마 작성
│ └── post.js //노트 테이블 스키마 작성
└── static //html, css 파일들. 만약 만든다면.
@ 강의 대로 해서 크게 DB관련된 schemas와 미들웨어 관련된 routes 디렉토리로 나뉘었다. 근데 html을 안구현해서 그런지 몰라도 routes의 index.js파일을 안에 구현할게 없었다. 강의의 실습부분은 안봤는데 궁금하긴하네
@ VSCODE 터미널에서
npm init -y //package.json 파일이 생성됨. 모듈을 설치하면 package.json 파일에 기록되어 있음.
npm install //나중에 배포할 때 사용자들은 운영체제 등 환경이 달라서 다른 파일이 설치되야할 수 있으므로 내가 개발할 때 설치한 모듈의 파일들(node_modules 폴더)은 배포 안하고 package.json 파일만 배포하는데, 이 명령어를 치면 package.json에 적힌 모듈들을 보고 알아서 그것들을 다 설치한다고 한다.
npm i express
@ 강의에서는 인터넷을 통해 MongoDB와 Studio 3T를 설치하여 진행.
@ 몽고디비에서는 테이블을 콜렉션이라고 함. 속성을 문서(Document)라고 함.
@ 코드에서 MongoDB를 이용하기 위해서 mongoose라는 도구를 설치하여 db에 연결. npm install mongoose
const mongoose = require("mongoose");
const connect = () => {
mongoose
.connect("mongodb://localhost:27017/spa_mall")
.catch(err => console.log(err));
};
mongoose.connection.on("error", err => {
console.error("몽고디비 연결 에러", err);
});
module.exports = connect;
@ /shemas/index.js에 위를 작성하고 app.js에는
const connect = require("./schemas");
connect();
를 추가하여 쓸 준비 완료.
const express = require("express"); //import express from "express"랑 같은 구분. 왼쪽이 변수인것도 같음.
const connect = require("./schemas"); //index.js는 명시 안해줘도 안적으면 그걸 찾음.
const app = express();
const port = 3000;
connect();
const noteRouter = require("./routes/posts.js");
const commentRouter = require("./routes/comments.js");
app.use(express.json()); //미들웨어가 생기는데 바디에 들어오는 json형태 데이터를 파싱해줌. 이거 안해주면 바디에 보내도 아무것도 안보낸게됨.
const requestMiddleware = ((req, res, next) => {
console.log('Request URL:', req.originalUrl, ' - ', new Date());
next();
}
);
app.use(requestMiddleware);
app.use("/note", noteRouter);
app.use("/comment", commentRouter);
app.get("/", (req, res) => {
res.send("hello");
next(); //next도 항상 써주는게 좋다. try catch 해서 catch에 .
});
app.listen(port, () => { //app.listen은 맨밑에 쓰는게 관행.
console.log(port, "서버 켜짐");
});