목록공부 (179)
저장을 습관화
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/byVwlf/btsj3VxUtky/Hkq9iOZTs2OPklkiEWq4LK/img.png)
mongoose를 사용하여 post를 해보면 DB 테이블에 의도하지 않았던 필드 __v가 나오게 된다. 딱히 서비스에 지장을 주는 것은 없으니 냅둬도 상관없지만 신경쓰인다면 스키마 설정 파일에서 versionkey: false로 나오지 않게끔 할 수 있다 이거에 대한 내용은 아래 블로그 참조 https://avocado12-note.tistory.com/14 mongoose '__v' 필드 MongoDB에서 직접 insert할 경우에 나타나지 않고 mongoose를 통해서 데이터를 삽입하면 '__v' 필드가 생긴다. 의미하는 바는 버전 키라고 하는데 문서의 내부 개정판을 설명하고 기본 값은 0이다. 삭제 avocado12-note.tistory.com
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b6JUXd/btsjYcOAAN5/yjiniqhYaTbahKYh7krJIK/img.png)
순서 1. 에러 발생 상황과 증상 2. 해결 방법 1. 에러 발생 상황과 증상 node.js 공부 중 app.js 파일에서 express를 이용해 웹서버를 가동시키고, ./schemas/index.js에 등록되어있는 내용에 따라 mongoDB에 연결하려함 터미널에 node app.js을 입력하였고 '3000 포트로 서버가 열렸어요!' express 정상 가동 로그를 확인함 그리고 조금 후 터미널에 아래와 같은 에러 로그가 출력됨 $ node app.js 3000 포트로 서버가 열렸어요! MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 at _handleConnectionErrors (C:\(생략)\node_modules\mongoose\lib\..
- REPL 입력받은 코드를 읽어(Read)들여 메모리에 저장하고, 평가(Evaluate)된 값을 출력(Print)한다. 특정 신호를 입력받기 전까지 위의 과정을 반복(Loop)한다. 쉽게 말해 입력한 코드의 결과값을 즉시 확인할수 있기 때문에 간단한 문법 등의 테스트에 적합한 환경이라는 의미이다. Node.js가 이 REPL환경을 제공하고 있다. 상식으로 알고 있자 - 동기(sync)와 비동기(async) '동기로 실행된다' = 먼저 실행된 코드의 결과가 나올때까지 대기한다. '비동기로 실핸된다' = 실행된 순서와 관계없이 결과가 나온다. - Blocking Model과 Non-Blocking Model Blocking Model은 코드의 실행이 끝나기 전까지 실행 제어권을 다른 곳에 넘기지 않아 다른..
1. Git 브랜치 배우기 게임 https://learngitbranching.js.org/?locale=ko Learn Git Branching An interactive Git visualization tool to educate and challenge! learngitbranching.js.org 게임의 형식으로 깃의 개념과 흐름, 용어들에 대해서 배울 수 있다. 2. 매우쉽게 알려주는 git&github https://codingapple.com/course/git-and-github/ (무료) 매우쉽게 알려주는 git & github - 코딩애플 온라인 강좌 Next.js는 프론트엔드부터 서버까지 만들 수 있는 React기반 프레임워크입니다. 이것만 사용해도 풀스택 웹개발이 가능합니다. Nex..
parentNode 현재 노드의 부모 노드를 선택한다. 이번 프로젝트에선 아래와 같이 클릭된 노드에서 부모 노드로 올라간 뒤, 다시 quertySelector로 crtTxtArea 클래스를 찾아 내려갔고, 그 textarea에 입력된 내용을 가져왔다. exVar.addEventListener('click', event => { console.log(event.target.parentNode.querySelector('.crtTxtArea').value); }) closest()와의 차이 closest('#selector')는 자신의 부모 태그들 중에서 selector를 기준으로 찾아갈 수 있다. 하지만 parentnode는 자신의 바로 부모 노드만을 찾아간다. 이번 프로젝트에서 closest()는 아래와..
오늘 발생했던 에러 unexpected token 'c' in JSON.... 에러가 발생한 위치조차 엉뚱한 곳을 가르킴 - 에러 원인 로컬 스토리지에 저장한 댓글 수정 기능 작성 중 const obj = { id: localStorage.getItem('id'), cmt: $txt.value, movieId: idParams, cmtKey: priKey }; localStorage.setItem(priKey, JSON.stringify(obj)); // JSON.stringify(): 객체 obj 를 string 타입으로 저장함 // 로컬 스토리지에서 확인했을때는 다음과 같다. // key: 3 // value: {"id":"testID","cmt":"test3","movieId":238,"cmtKey..
- window.location.reload(); 현재 웹 페이지를 새로고침함 로컬 스토리지를 비우고, 웹에 등록하였던 댓글 등을 지울때 페이지를 새로고침하는 용도로 사용하였음 (변수).addEventListener("click", () => { localStorage.clear(); window.location.reload(); }); 이외에도 로컬 스토리지, 세션 스토리지, setTimeout(), setInterval() 등이 있으나 이건 과제가 완료된 후 적기로...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVoKpa/btsiO5XrrcY/r1JXNP4G2kNiRRmD3CDqm0/img.png)
0. 지금까지는 주석달때 아래와 같이 썼었다 // name하고 age 넣고 실행하면 nameage 리턴하는 함수임 function hello(name, age) { return name + age; } 이런 경우 메모를 해뒀으니 나중에 아 hello는 이런 함수구나 하고 알 수 있겠지만 코드의 양이 너무 많아졌으면 지금 사용하려는 함수가 뭐였더라..? 싶어 다시 주석보러 올라갔다 오기 귀찮을때 더 좋은 방법이 있다. 1. JSDoc 기능 주석을 쓸때 //(내용) 대신, /**(내용)*/ 이라고 적는 것이다. /**name하고 age 넣고 실행하면 nameage 리턴하는 함수임*/ function hello(name, age) { return name + age; } 이런 식으로 사용하면 함수를 사용하기 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dQHLad/btsiQHIhLHs/gEWqnYv2TkObdJ2I6Da9ZK/img.png)
0. 지난 이야기 2023.06.05 - [TIL] - 230605 TIL - 모듈 Module // File: 1.html // ...(전략) // ...(후략) // File: 2.js const test = "testString"; // File: 3.js window.alert(test); // file: 4.js const test = "isThisWork?"; 이전 시간에 html 파일에 사용할 js 파일들을 나열해줬더니 2.js와 4.js가 서로 변수 선언이 충돌하던 일이 있었다. 이상하다 생각했는데 HTML에는 스코프라는 개념이 없기 때문에 원래 이러는게 정상이었다. 만약 억지로 두 파일의 내용을 공유하고 싶지 않다면 4.js 파일 안에 변수 선언 내용을 {중괄호}로 묶어줘야 했었다. 하지..
- 오늘 보게된 자바스크립트 기초 강의 재밌고 유용하니 다른 사람들에게도 추천하고 싶다 6편 기본 제공이고, 나머지는 결제 후 수강이다. 기본 제공 강의 6편으로 selector와 function, getElementById, addEventListener 실습도 가능하니 나중에 헷갈리면 다시 보기 위해 메모한다. 메세지에요 닫기 버튼 ID 버튼 PW 버튼 // 위 두줄의 'block', '~입력안했어요'가 argument, 전달인자이고 낮에는 딴 생각만 들었는데 해가 지면 공부에 집중이 더 잘되는건 왜일까