카테고리 없음

간단한 게시판 만들기 - 6

JungCw 2024. 3. 4. 10:27

기본적으로 구현하고자 했던 게시판의 기능들은 만들었으니 이제 남은 기능인 로그인, 회원가입 등을 db에 연동하는 과정을 기록하려 한다.

 

일단 두 작업을 만들기 전에 회원 정보를 저장해 둘 db를 만든다.

CREATE TABLE userinfo(
    name VARCHAR(20) NOT NULL,
    id VARCHAR(50) NOT NULL,
    pw VARCHAR(50) NOT NULL,
    PRIMARY KEY(name)
);

만들어놓은 table에 전송받은 데이터를 저장할 쿼리문을 만든다.

 

<index.js>

app.get("/user/userget", (req, res)=>{
    const query = "SELECT * FROM userinfo;";
    db.query(query, (err, result)=>{
        res.send(result);
    })
})

이전에 게시물 목록을 전달받아 저장했던 것처럼 이번에도 유저 목록을 db로부터 받아 저장해볼 것이다.

 

<app.js>

useEffect(()=>{
  Axios.get('http://localhost:8000/user/userget').then((response)=>{
  setUser(response.data);
  })
},[user])

이제 user에 목록을 저장하였고 변화가 생길때마다 새로이 업데이트 될 것이다.

 

로그인 기능은 이미 설정된 user의 값을 대조하면 되기에 수정할 필요가 없으므로, 회원가입 기능만 수정한다.

먼저, 입력된 회원 정보를 db에 저장하는 것부터 만든다.

 

<index.js>

app.post("/create_account", (req, res)=>{
    const query = "INSERT INTO userinfo (name, id, pw) VALUES (?, ?, ?);";
    const params = [req.body.name, req.body.id, req.body.pw];
    db.query(query, params, (err, result)=>{
        res.send('a_created');
    })
})

 

다음으로 해당 url로 데이터를 전송해줄 수 있도록 app.js를 수정한다.

 

<app.js>

function AccountSub(sinfo){
  Axios.post('http://localhost:8000/create_account', {
    name: sinfo.name, id: sinfo.id, pw: sinfo.pw
  })
}

해당 컴포넌트에 적절한 값이 올 수 있도록 배치한다.

else if(mode === 'ACCOUNT'){
	...
    else {
          const sinfo = {name:u_name, id:u_id, pw:u_pw};
          AccountSub(sinfo);
          alert('가입이 완료되었습니다.');
          setMode('LOGIN');
    }
    ...
}

 

 

이렇게 하면 만들어둔 기능과 db의 연결이 완료된다.