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