컴퓨터언어/Node.js

Node X MySQL 오답 및 중점노트

bbanpro 2020. 10. 28. 18:11
728x90
반응형

 

1. 프론트에서 axios를 통해 데이터를 객체로 보내면, 백엔드에서도 같은 키 값으로 찾아야 한다. input 태그의 name 속성이 아니다.

 

2. 각 라우터의 controller에서 모델을 require 할 때, {}로 구조분해 할당을 하든지, 직접 경로를 파고들어 참조할지 확실히 하자.

 

3. html 템플릿에 for문 돌리는 것보다는 프론트js에서 처리하자.

 

4. 404처리는 에러가 아니라, 지금까지 위에서부터 처리되지 않은 라우터들을 모아서 처리해주는 것이라고 생각하는 일반 라우터이며, 여기서 next(error)를 한번 거쳐서 에러 라우터로 보내는 것이다.

/* 이것은 에러 처리 라우터가 아님! 지금껏 나오지 않은 주소를 처리하는 라우터를 단지 404로 처리하는 것에 불과함! */
app.use((req, res, next) => {
    const error = new Error(`${req.method} ${req.url} has not found.`);
    error.status = 404;
    next(error);
});

/* 이것이 에러 처리 라우터다. */
app.use((err, req, res, next) => {
    res.locals.message = err.message;
    res.locals.error = process.env.NODE_ENV !== "production" ? err : {}; // 개발 모드에서만 스택 트레이스 보이도록 분기 처리.
    res.status(err.status || 500).render("error");
});

5. npx는 global 설치를 막아준다.

728x90
반응형