Wordle Maker Project 9일차

PROLCY·2022년 11월 9일
0

Wordle-Maker-Project

목록 보기
9/31

오늘은 11월 9일 9일차이다.

목표

  • 정답 단어 설정 시 단어 존재여부 검증
  • 닉네임 중복 검증 손보기

진행

단어 존재 여부 검증은 간단했다. 이전에 solverPage에서 구현한 적이 있기 때문에 비슷하게 구현하면 되었다.

코드

client.post('/make/exist', { word: correct_word })
.then( res => {
    if ( res.data.exist === false) {
        setMessage('Not in word list');
        setWordState('not-word');
        setTimeout(() => {setWordState(''); setMessage(null);}, 500);
    } else {
        submitWord = true;
        isFinished = true;

        for( let i = 0 ; i < wordMaxLen ; i++ )
            word[i].state = 'correct';

        client.post('/make/register', { 
            nickname: nickname, 
            correct_word: correct_word, 
        })
            .then( res => {
                console.log(res.data);
                setMessage('Your Wordle was made!');
                setTimeout(() => {
                    setMessage(res.data);
                }, 2000);
            })
        // 만든 문제 링크 띄우기(모달 or 링크 복사 div)
    }
})

makerPage의 한 부분이다. POST /make/exist 요청을 단어와 함께 보낸다. 서버에서는 객체를 하나 보내주는데, 속성이 exist이다. 이 값이 false이면 단어가 존재하지 않는다는 메시지를 띄우고, 아니라면 등록 절차를 거치고 링크(res.data)를 반환한다.

router.post('/exist', async (req, res) => {
    try {
        const wordFound = await Word.find({ word: req.body.word });
        
        if ( !wordFound.length )
            res.send({
                exist: false
            })
        else {
            res.send({
                exist: true
            })
        }
    } catch (error) {
        console.error(error);
    }
});

서버의 POST /make/exist 요청을 처리하는 라우터이다. 찾는 단어가 없다면 Word.find는 [ ]을 반환하기 때문에 길이로 존재 여부를 판별한다.

닉네임 중복 판별 부분은 생각을 좀 해봤는데, 세션을 이용해 걸러낼 예정이다.

SolverPage

  • 접속 시 세션 조회
  • 세션이 없다면
    - 닉네임 입력 받고 세션에 저장, 6줄 렌더링
  • 세션이 있다면
    - 세션의 닉네임 값 조회하여 wordList와 keyState 조회 후 바로 6줄 렌더링

MakerPage

  • 접속 시 세션 조회
  • 세션이 없다면
    - 닉네임 입력 받고 세션에 저장(이때 특정 시간되면 만료되도록 저장)
  • 세션이 있다면
    - 세션의 닉네임 값 조회하여 correct_word와 url 조회, 닉네임 입력 받지 않고 바로 correct_word와 url 렌더링

내일 할 것

  • 세션 구현

마무리

시간이 많이 없는 관계로 간단하게 진행했다. 중복 판별에 대한 부분은 일단 대략적인 부분만 짜놓았는데, 더 고민해봐야겠다. 그리고 이제 maker가 자신이 만든 url에 접속한 solver들의 단어들을 확인할 수 있는 LoadPage도 만들어야 하는데, 그 부분에 대한 구성도 찬찬히 생각해야겠다.

0개의 댓글