220325 TIL

Parker.Park·2022년 3월 26일
0

TIL

목록 보기
10/39

코드캠프 백엔드2기 10일차

1. 미니 프로젝트

약 한 8일간 배운 것을 기반으로 미니프로젝트가 시작되었다.
프론트엔드와 백엔드, 그리고 서버를 통합하는 API 위주로 만드는것인데 출발부터 난항이다. 우선 서버에서 데이터를 가져오는 것부터가 문제였다.

2. MongoDB 데이터 조회시 null 값이나 err가 발생하는 경우

qeury 중 find() 함수나 findOne() 함수를 썼는데, 문제는 데이터가 없을 경우 null값과 동시에 err가 발생하여 API가 작동 하지 않았다.

app.post('URL',async (req,res) =>{
const ckeckNum = User.findOne({phone : phoneNum})
.
.
.

})

아래 코드에서 위에 variable를 참조하는 것을 쓰기라도 했다면 null값 혹은 에러가 발생하여 코드자체가 진행 하지 못했다.

결론은 try, catch 구문으로 문제가 안될 에러가 발생할 경우 그냥 지나가게 처리하였고, 문제가 발생하는 에러에 대해서는 return 값을 주어 서버에 response를 보내는 것을 처리하였다.

예를 들어, 인증 True 값이어야 회원 가입이 진행 되는데 핸드폰 번호가 아예 조회가 되지 않을 경우 가입이 진행 할 수 없기에 return 값을 주어 해당 API를 종료 시켰다.
그리고 User DB에서 같은 핸드폰 번호가 발견 되었을 경우 FE에 이미 등록된 번호가 있다는 것으로 return값을 주었다. 그리고 같은 핸드폰 번호가 발견되지 않을 경우 다음 절차를 진행하도록 하였다.
여기서가 조회가 되지 않을 때 error는 지나가도록 처리하였다.

3. aync // awiat 에서 callback 함수는 같이 사용 할 수 없다.

에러처리를 찾아보던 중 callback 함수를 사용 하여 처리하는 구문을 보고 적용하려 했으나 "Query was Already executed~" 라는 에러가 발생하여 한참을 찾아보았던거 같다 ㅠㅠ.

4. find() // findOne() 함수 차이

Mongoose 구문 중 조회하는 데이터 값이 없을 경우 find 와 findOne은 약간의 차이가 있었다. find는 Array안에 결과값이 나오고, 그래서 값이 없을 경우 빈 Array로 나왔다.(하지만 나중에 선언하 변수를 참조하는 코드 때문에 에러가 발생하였다 ㅠㅠ) findOne의 경우는 null??undefined?? 값과 에러값이 같이 나오는 것 같았다 ㅠㅠ

해야할 양에 비에 처리하는 속도가 많이 느린거 같다.
그래도 확실히 배워야 할 것들은 배우고 가야 겠당 ㅎㅎ

profile
개발자준비중

0개의 댓글