node(9)
-
form 안의 button은 기본적으로 submit 기능을 가지고 있다! (preventDefault 안 먹힐 때?)
HTML만을 다루거나 정적 웹사이트를 만들 때는 그럴 일이 거의 없겠지만, 사용자의 입력에 따라 다르게 반응해야 하는 웹앱(CRUD는 기본)을 제작한다면 JavaScript에서 innerHTML로 태그를 직접 수작업으로 넣어주어야 하는 경우가 있다. 그래서 실수하기 쉽다. IDE에서 오리지널 HTML이나 EJS, PUG 등 템플릿을 사용한다면 HTML Element의 속성들도 자동추천해주기 때문에 버그가 적다. 하지만 JS에서 수작업을 한다면 특정 속성을 간과한 것이 큰 버그로 이어질 수 있다. 나는 사용자들의 댓글 내용을 li 태그로 뿌리면서, "현재 로그인한 유저의 id"와 "댓글작성자의 id" 같은 li에 한해서 삭제버튼을 부여하려고 아래와 같은 코드를 만들었다. myForm.innerHTML = ..
2020.07.26 -
[MissingUsernameError, show dbs] - Mongo를 다룰 때 사소한 실수
1. MissingUsernameError?! ctor [MissingUsernameError]: No username was given 유저로부터 HTML 폼 양식을 통해 입력받은 데이터를 MongoDB에 추가하려고 할 때, 위와 같은 오류가 나왔었다. 이럴 때는 form의 input 중 name 속성을 빠뜨린 것이 있는지 다시 한번 확인하자. 2. 왜 내가 만든 db가 목록에 안뜰까? > show dbs show dbs 명령어를 쳤는데도 내가 새로 만든 Database가 나타나지 않는 것은, 내가 아직 어떠한 데이터도 생성하지 않았기 때문이다. 어서 collection을 생성하러 가자. 3. passport로 로그인 시 자꾸만 원하는 페이지로는 안가고 failureRedirect만 해요! 분명 눈을 ..
2020.07.22 -
axios 400 POST error : Mongoose를 다룰 때 new 키워드를 조심하자
사용자로부터 입력받은 Form 데이터를 mongoose로 연동한 MongoDB에 저장하려고 할때, axios가 POST 400 에러를 토해냈다. 한참 모니터와 눈싸움하며 고민한 결과 나도 모르게 new 키워드를 집어넣었던 것이다. mongoose에서 new 키워드를 사용하는 경우는 스키마를 생성할 때이다. 조심하도록 하자! export const saveStudent = async (req, res) => { const { params: { id }, body: { name }, user, } = req; try { const major = await Major.findById(id); // 밑에 await new Student.create()로 써서 안됐던 것! const newStudent = awa..
2020.07.17