다재다능 개발자 성장기 🚀
항해99 👩💻23일차 TIL 본문
🎉오늘의 한 일🎉
1. 로그인 성공시 토큰이 생성되어 사용자의 브라우저로 날아가게끔 만들었다.
2. auth-middleware를 만들어서 글작성, 수정 페이지에 로그인하지 않은 사용자가 접근시 사용하지 못하도록 구현하였다.
🐣배운 점🐣
res.locals.
express가 제공하는 안전한 변수이다. res.locals.user = user; 이런 식으로 사용자값을 넣어두면 굳이 데이터베이스에서 사용자 정보를 가져오지 않고 해당 변수를 사용하는 곳에서 언제나 꺼내서 사용할 수 있다. 또 담아둔 값은 정상적으로 응답값을 보낸 후 소멸하므로 해당 데이터가 어디에 남아있을 걱정의 여지가 없어진다. res.locals의 값들은 request의 라이프 타임 동안에만 유효하다. 그리고 html/view 클라이언트로 변수들을 보낼 수있으며, 그 변수들을 오로지 거기서만 사용할 수 있다. 페이지 렌더링시 중복되는 값을들 넣어두면 한꺼번에 처리할 수 있어서 편리하다.
contentType: "application/json"
일반적으로 서버에서는 RestAPI에서 Post요청을 받을때는 data가 json 형식으로 body에 들어있다고 가정하고 개발을 하게 된다. 하지만 클라이언트 쪽에서 POST 방식으로 요청하거나, jQuery의 ajax 등의 요청을 할때 기본적인 Content-Type은 JSON타입이 아닌 form-urlencoded 타입이다. 이렇게 서로 타입이 맞지 않아서 415 status code 에러가 일어날 수 있다. 이때 클라이언트에서 contentType: "application/json" 을 사용하여 JSON으로 타입을 맞춰주면 해결된다.
JSON.stringify( )
자바스크립트의 값을 JSON 문자열로 변환한다. ajax에서 서버로 key와 value를 보내줄 때 사용할 수 있다.
authMiddleware의 사용
// 게시글 작성 페이지
router.post('/blogList', authMiddleware, async (req, res) => {
});
사용하고자 하는 router에 미리 구현해 놓은 사용자검증 미들웨어(authMiddleware)를 넣어주면 자동으로 해당 페이지에서 사용자 검증을 하게되어 로그인하지 않은 사람의 사용을 막을 수 있다.
📌Trouble Shooting 📌
E11000 duplicate key error index in mongodb mongoose
고유인덱스(unique index)값을 가지고 있지 않은 데이터에대하여 null 값이 자동 할당되기 때문에 이러한 오류가 뜬다고 한다. 해결방법으로는 db.collection.dropIndexes(<name>)을 통하여 index를 초기화해주면 된다.
'항해99_6기_TIL' 카테고리의 다른 글
항해99 👩💻25일차 TIL (0) | 2022.03.31 |
---|---|
항해99 👩💻24일차 TIL (0) | 2022.03.31 |
항해99 👩💻22일차 TIL (0) | 2022.03.28 |
항해99 👩💻21일차 TIL/WIL (0) | 2022.03.27 |
항해99 👩💻20일차 TIL (0) | 2022.03.26 |