• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 리액트,node.js로 회원가입 구현

리액트,node.js로 회원가입 구현

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #53418

    현정
    참가자
    리액트에 회원가입 폼을 만들었고 axios 로 post요청을 통해
    node.js에서 mongodb로 회원정보를 저장하게 만들었는데 
    그다음을 어떻게 만들어야 할지 모르겠어요
    회원가입 완료 시에는 로그인 페이지로 이동하고,
    이미 있는 id일시 존재하는 아이디 라는 팝업을 띄우고 싶은데
    이걸 react에서 어떻게 구현해야하나요?
    axios요청부분에서 res에서 id가 있을경우 모달창 띄우고
    회원가입 성공했으면 rediret하도록 만들수있나요?
    
    <Register.js>
    
    import React,{useState} from 'react';
    import axios from 'axios'
    export default function Register(){
        const [id,setId] = useState('');
        const [pw,setPw] = useState('');
        const [modal,setModal] = useState(false)
        const [already,setAlready] = useState(false)
        const handleId = (e) => {
            setId(e.target.value)
        }
        const handlePw = (e) => {
            setPw(e.target.value)
        }
        
        const register = async() => {
            let body = {
                id: id,
                pw: pw
            }
            try {
                const res = await axios.post('/naver/register',body)
               if ( res.data == id){
                    setAlready(true)
                    console.log(res);
                } else{
                    setModal(true)
                } 
    이부분에서 어떻게 해야될지 모르겠어요ㅠ 중복검사가 안되고 무조건 회원가입이
    완료되었다고만 나와서
            }catch(error){
                console.log(error);
            }
        }
        const onSubmitHandler = async(e) => {
            e.preventDefault();
        }
        return (
            <div>
            <form onSubmit={onSubmitHandler}>
                <div class="form-group">
                    <label>아이디</label>
                    <input type="text" class="form-control" name="id" onChange={handleId}/>
                </div>
                <div class="form-group">
                    <label>비번</label>
                    <input type="text" class="form-control" name="pw" onChange={handlePw}/>
                </div>
                <button class="btn btn-danger" type='submit' onClick={register}>회원가입</button>
                </form>
                {
                    modal == true ? <Modal/> : null
                }
                {
                    already == true ? <Already/> : null
                }
            </div>
            // 회원가입 완료 후 완료페이지 렌더링,메인 화면 돌아가기
           // 이미 있는 id일시 존재하는 아이디 라는 팝업 띄우기
        )
    }
    <server.js>
    app.get('/naver/register', function(req,res){
      res.send('registerpage')
    })
    app.post('/naver/register', function(req,res){
      const {id,pw} = req.body;
      db.collection('user').findOne({id:id}, function(err,result){
        if(result == null){
          db.collection('user').insertOne({id:id, pw:pw}, function(err,result){
            console.log(result);
            res.redirect('/login')
          })
        } else {
          res.send('이미 존재하는 아이디 입니다.')
        }
      })
    })
    
    
    #53442

    codingapple
    키 마스터
    ajax로 요청하면 res.redirect 이런건 동작안해서 
    서버에서는 성공/실패 메세지만 보내주고 리액트에선 ajax성공이나 실패도착시 url 이동시켜주면 됩니다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠