티스토리 뷰

728x90

오늘 할 일

1. 인증 번호 생성하기

2. twillio 패키지 이용해서 문자 보내기 


1. <개발> 라우터 정리

 출석부를 불러오는 기능에만 집중해서 하다보니 초기 설정과 달리 인증과정을 생략한채 라우터를 설정했습니다. 인증과정이 있다고 가정하고 다시 라우터를 설정하겠습니다. -> 완료! ( 앞에 포스팅했던거랑 살짝 달라졌어요. 자세한건 github 참고,, )


2. <개발> 인증했을 경우, 다시 메인페이지로 alert와 함께 보내기

  • 문제 : send를 사용하면.. alert는 되는데 메인페이지로 가진 못하고, redirect를 사용하면 메인페이지로 가는데 alert가 안됩니다ㅠㅠ
  • 해결 : 안되는줄 알았는데 되더라구요! 저는 노드 개발을 하면서 쿼리처리도 못하는 바보였습니다!^^ res.redirect 할때 뒤에 쿼리를 붙여서 보내주면 get요청으로 처리됩니다. 
//example
res.redirect(`/?Auth=complete`);

 루트('/')에서 쿼리와 함께 get 요청을 받은 후에 쿼리를 처리하면 됩니다. 하지만 슬프게도, NodeJS에서는 alert가 안됩니다. Node.js 상에서 Web의 내장함수인 alert를 실행할 수 없기때문입니다.

 그래서 서버에서 res.locals.message를 이용해서 HTML에 nunjucks를 이용해서 나타냈습니다.


3. <에러> 사용자가 입력란에 전부 입력하지 않았을 경우

 사용자가 input에 입력하지 않을 경우, 에러가 발생합니다. 이럴때는! 만능 try, catch로 감싸서 얼른 해결해줍니다. 사실 try,catch가 만능은 아니고 에러를 무시하고 다음 과정을 진행할 수 있도록 도와줍니다. 저희 프로그램에서 입력이 없을 경우, 에러가 발생하지 않아도 어짜피 사용자가 없다고 뜨기 때문에 try, catch 이외의 에러를 처리할 필요는 없습니다.

  try{
    //학생의 정보가 출석부에 있는지
    var exis=false;

    //googlesheet 불러오기
    authGoogleSheet(); 
    await doc.loadInfo();

    //해당 반의 시트를 불러온다.
    console.log(req.body.class);
    var sheet = doc.sheetsByIndex[req.body.class]; 
    await sheet.loadCells('B7:B100');

    for (var i = 7; i <= 96; i++) {
      if(sheet.getCellByA1('B'+i).value===req.body.name){
        exis=true;
      }
    }
  }catch(err){
    console.log(err);
  }

4. <개발> 인증번호 생성하기

1. Math.random을 활용해서 다섯자리 숫자를 랜덤하게 생성합니다. 

2. 만든 숫자를 세션에 저장합니다.

//1. 
const num=Math.floor(Math.random() * (100000 - 10000) + 10000);
//2. 
req.session.auth_num=num;

5. <에러> req.session.id

 num이라는 변수보다 id라는 변수가 더 잘맞는 것 같아서 req.session.id에 학생의 정보가 들어있는 행의 인덱스를 넣었습니다. 근데 계속해서 req.session.id에 이상한 값이 담겼어요. 그래서 혹시나해서 req.session.id라고 구글링해보니까 글쎄 req.session.id는 req.session ID의 별칭(alias)이랍니다.ㅠㅠ 그래서 원래대로 num을 써줬더니 잘됐어요.


7. <개발> twilio 사용해서 문자 보내기

생각보다 빨리 끝났어요!

 

    1. twilio 홈페이지 들어가서 회원가입

    2. twilio 웹페이지의 console창 들어가서 twilio 전화번호 생성

    3. 인증키, SID .env에 저장

    4. twilio 예제코드 실행

    5. twilio 예제코드 응용해서 프로그램에 적용하기

 

 위의 과정을 하니까 에러없이 해결됐습니다!

 

 


 ㅠㅠㅠ백엔드 개발이 끝났네요,, 눈물이 앞을 가립니다😭😭😭 너무 뿌듯하네요!!!! 이제 배포만 남았습니다. 후후!

 제가 이 프로젝트를 진행했던 이유는 사실 이 프로그램을 실제로 적용해서 제 일을 편하게 하기 위함입니다. 배포하려면 팀장님께 이 기능을 개발했다고 보고한 후에 이 프로그램을 회사에서 써도 되는지 여쭤봐야해요.. 그래서 배포를 못할 수도 있습니다.

 그렇지만 직접 프로젝트를 처음부터 끝까지 혼자서 해보니까 얻은게 정말 많습니다ㅎㅎ 제 개발 일지를 읽어주신 분이 계실지는 모르겠지만 여기까지 읽어주셔서 감사합니다ㅎㅎ


 

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함