처음 진행한 솔로 프로젝트..
Mini node server 구현할 때 부터 어려웠지만,,
수업 끝나고 다시한번 한줄한줄 작성해보니 이해가 어느정도 된 것 같다..
근데 서버랑 클라이언트 연결은 아직 너무 어려운 것 같다 .. 😢
리엑트 리팩토링 공부하고 꼭 연결해봐야지 !!!!!!!!!
하기 전 복습해두기 😎
const express = require('express');
const app = express();
//cors 모듈 불러오기
const cors = require('cors');
// morgan 미들웨어 불러오기
// morgan : 요청과 응답에 대한 정보를 콘솔에 기록
const morgan = require('morgan');
// HTTP 요청 logger를 편리하게 사용할 수 있는 미들웨어
app.use(morgan('tiny'));
// cors를 적용
app.use(cors());
// Express 내장 미들웨어인 express.json()을 적용
app.use(express.json());
const port = 4000; // 포트번호 4000사용
const discussionsRouter = require('./router/discussions');
// TODO: app.use()를 활용하여 /discussions 경로로 라우팅합니다.
app.use('/discussions', discussionsRouter)
// 서버 상태 확인을 위해 상태코드 200과 함께 응답을 보냄
app.get('/', (req,res) => {
return res.status(200).send('fe-sprint-my-agora-states-server');
});
const server = app.listen(port,() => {
console.log(`[RUN] My Agora States Server... | http://localhost:${port}`);
});
module.exports.app = app;
module.exports.server = server;
const { discussionsController } = require('../controller'); // index.js 파일( 컨트롤러 )
//index.js 파일의 discussionsController 가져오기
const { findAll, findById, create, update } = discussionsController;
const express = require('express');
const router = express.Router();
// TODO: 모든 discussions 목록을 조회하는 라우터를 작성
router.get( '/', findAll );
//TODO: id에 맞는 discussions을 조회하는 라우터를 작성
router.get( '/:id', findById );
//TODO: 새로운 discussions을 추가하는 라우터를 작성
router.post( '/', create );
// TODO: id에 맞는 discussions을 수정하는 라우터를 작성
router.put( '/:id', update );
module.exports = router;
// ../repository/discussions에서 데이터 받아오기
const { agoraStatesDiscussions } = require("../repository/discussions")
const discussionsData = agoraStatesDiscussions;
const discussionsController = {
// 모든 discussions 목록을 응답
findAll: (req, res) => {
return res.status(200).json(agoraStatesDiscussions)
},
// id를 입력하면 입력한 id의 discussions를 보여줌
findById : (req, res) => {
const {id} = req.params;
// 요청된 id를 number 형태로 변환해서 가져와야 함
const list = discussionsData.find((el) => el.id === Number(id));
if(list) {
return res.status(200).json(list);
}
else {
return res.status(404).json('Not Found!')
}
},
// 새로운 discussion을 추가
create: (req, res) => {
const id = uuid();
discussionsData.push(req.body);
console.log(req.body);
return res.status(200).json(discossionsData);
},
// 해당 아이디의 데이터를 수정합니다
update : (req,res) => {
const { id } = req.params;
if(id){
let filtered = discussionsData.filter((el)=> id === el.id)
let obj = Objsct.assign(filtered[0],req.body);
console.log(obj);
return res.status(200).json(obj);
}
}
};
module.exposts = {
discussionController,
};
- module.exports
Array.prototype.find()
: 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환
➡️ 그런 요소가 없다면undefined
를 반환