본문 바로가기
경일/nodejs

[node.js] ajax, fetch, async, await, 로그인 기능 구현

by dev_kong 2022. 2. 17.
728x90
728x90

0. 목차

1. 개요

2. 해결

3. 후기

1. 개요

2022.02.15 - [경일/nodejs] - [node.js] fetch(async, await)로 로그인기능 만들어보기

 

[node.js] fetch(async, await)로 로그인기능 만들어보기

0. 목차 1. 개요 2. 기본세팅 3. HTML 4. fetch 5. 결과 1. 개요 수업시간에 ajax 비동기 통신에 대한 내용이 나와서 ajax 검색해보다가, promise 를 리턴하는 fetch 문법 사용이 더 편리할것 같아서 fetch 문법..

kong-dev.tistory.com

이거 하다가 마지막에 뻘짓을 했었는데 말이지.. ㅎㅎ

해결했다.

2. 해결

app.post('/user/login', (req, res) => {
  const { userid, userpw } = req.body;
  const user = userList.filter(
    (v) => v.userid === userid && v.userpw === userpw
  );
  if (user[0] !== undefined) {
    req.session.user = user[0];
    res.render('successLogin.html', { user: user[0] });
  } else {
    res.send('로그인 실패');
  }
});

server.js

 

   async function onButtonClicked(url) {
      const userid = document.querySelector('#userid').value;
      const userpw = document.querySelector('#userpw').value;
      const content = document.querySelector('#content');

      const option = {
        method: 'post',
        headers: {
          'Content-type': 'application/json',
        },
        body: JSON.stringify({ userid, userpw }),
      };
      const response = await fetch('/user/login', option);
      const data = await response.text();
      content.innerHTML = data;
    }

fetch

 

<p>{{user.username}}님 환영합니다~</p>
<ul>
  <li><a href=""> profile </a></li>
  <li><a href=""> logout </a></li>
</ul>

successLogin.html

 

이렇게 하면 된다..

3. 후기

 

나는 텍스트를 보내주면 nunjucks구문이 알아서 동작할 줄 알았는데 아니었다.

랜더링한 결과를 res에 실어서 보내주면 data 에서 받는다.. ㅎ 

딱 한발자국이 모자랐던것 같다...

728x90
728x90

댓글