설치 및 구현 초기 -개인과제 리뷰2

codeing999·2022년 7월 29일
0

CRUD BACKEND 구현

목록 보기
5/10

Directory Structure

프로젝트 디렉토리 구조

.
├── 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파일을 안에 구현할게 없었다. 강의의 실습부분은 안봤는데 궁금하긴하네

NPM

@ VSCODE 터미널에서
npm init -y //package.json 파일이 생성됨. 모듈을 설치하면 package.json 파일에 기록되어 있음.
npm install //나중에 배포할 때 사용자들은 운영체제 등 환경이 달라서 다른 파일이 설치되야할 수 있으므로 내가 개발할 때 설치한 모듈의 파일들(node_modules 폴더)은 배포 안하고 package.json 파일만 배포하는데, 이 명령어를 치면 package.json에 적힌 모듈들을 보고 알아서 그것들을 다 설치한다고 한다.

express.js

npm i express

MongoDB, mongoose

@ 강의에서는 인터넷을 통해 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();
를 추가하여 쓸 준비 완료.

app.js

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, "서버 켜짐");
});
profile
코딩 공부 ing..

0개의 댓글