javascript 9

Express로 SNS 만들기 - 데이터베이스 구조 갖추기

npm start시 아래와 같은 에러 해결하고 넘어가자. (비번이 틀렸나?,,) 데이터베이스를 만들어 보자 schema - column 구조인데 아래 명령어가 db 생성 명령어 npx sequelize db:create 명령어를 치게되면 config 폴더안에 config 파일을 찾아주는데 config.json 파일에서 mysql id / password를 쳐주자. // config.json json파일에서 주석처리 안되지만 블로그니까 써줌 // 실제 데이터베이스에서 개발용 / 테스트용 / 배포용으로 나누게 된다. // 혹은 개발용 db / 배포용 db로 나눔 { "development": { "username": "root", "password": "apdlvmf1!!!", "database": "nod..

Node.js/NodeJS-book 2022.03.16

class 예제 & 콜백 함수 재정리

클래스에 대해서 이야기해보자 Counter라는 간단한 class를 만들면 Counter에는 자체적으로 counter라는 변수가 있다. counter로 오브젝트를 만드는 순간 0으로 초기화 된다.(아래그림) class 내부에는 increase라는 함수가 있는데 increase라는 함수를 호출할 때마다 counter의 숫자를 하나씩 증가할 것이다.(++) 즉 class안에는 counter가 있고 increase라는 함수가 있다.(class diagram) class는 다양한 object를 만들기 위한 청사진이다라고 기억하자 coolCounter라는 변수를 만들고 Counter라는 class를 넣자. 그리고 increase를 계속 호출해주면 1씩 늘어난다. increase 함수 자체에서 this.counter..

boolean과 && 연산자

간단하게 정리하자 -1, hello, false, true 등등 다 결과값이 true로 나오고 0, -1, '', null, undefined는 다 결과값이 다 false로 나오게 된다. num이라는 값이 없는 변수를 설정하고 console을 찍어보면 false가 나온다.(빈값인 num은 undefined이기 때문에) 아래는 num이 true이면 num을 출력해라 이뜻이다. num이 false니까 실행이 되지 않는다. 아래는 obj가 true이면 obj.name을 출력하라는 것인데 if문가 &&문 둘다 같은 뜻이다. &&문이 더 간결하다. 참고: https://www.youtube.com/watch?v=SswrP0JLNGY&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index..

비동기 async와 await & Promise APIs

async와 await는 promise위에서 간편한 APIs를 제공하는데 기존에 존재하는거 위에 혹은 기존에 존재하는 것을 감싸서 간편하게 쓸 수 있는 API를 제공하는 것은 syntactic sugar라고 한다. 한가지 예로 class가 있었는데 JS에서 class는 전혀 새로운 것이 아니라 prototype을 베이스로 한 그 위에 살짝 덧붙여진 것이다. 첫번째로 볼것은 async & await이다 promise를 유지해서 써야지 맞는 경우가 있고 async와 await로 변환해야지 좀 더 깔끔해지는 경우가 있다. 이러한 차이점은 프로젝트를 해보면서 경험해보자. async를 사용법을 보면 예를 들어 사용자의 데이터를 벡앤드에서 받아오는 것이있으면 네트워크 통신을 해서 벡앤드 데이터를 받아오는데 10초정..

비동기 처리 Callback 이해하기

첫번째로는 synchronous와 aysynchronous에 대해서 알아보면 JS는 synchronous 즉 동기적인 프로그램이다. 바로 hoisting이 된 이후부터 코드가 작성한 순서에 맞쳐서 하나하나씩 동기적으로 실행된다는 것이다. hoisting이란 var변수와 function declaration 함수선언들이 자동적으로 제일위로 올라가는 것이 hoisting이다. hoisting된 이후부터 코드가 나타나는 순서대로 자동적으로 실행이 된다. 아래와 같이 정해진 순서에 맞게 나타난다. aysynchronous는 비동기적으로 언제 코드가 실행될 지 예측할 수 없는 것을 말한다. 아래 예제를 보자 setTimeout이라는 web API가 있는데 브라우저에서 제공되어지는 API로 지정한 시간이 지나면 전..

유용한 10가지 배열함수들과 Array APIs 총정리

array-apis에 대한 문제들을 보면 배열을 string으로 변환하는 문제인데, 주어진 배열안에는 세개의 아이템이 담겨져 있고 담겨진 이 아이템을 string으로 묶어야 한다. 배열안에 join이라는 함수가 있는데 join이라는 함수를 보게되면 join은 배열에 있는 모든 것들을 더해서 string으로 리턴하는 것인데 separator을 통해서 구분자를 넣어서 string으로 만들어준다. separator는 ?가 들어있는데 전달해도 되고 전달하지 않아도 된다는 것이다. 배열안에 있는 join이라는 API는 separator라는 문자열을 받기도 하고 안받기도 하는데 결국은 배열에 있는 모든 아이템을 string으로 나타내어주는 것이다. 구분자(,)를 넣어서 해도 되고 안해도 되는데 넣어서 출력하게 되면..

배열에 대해서 / APIs 정리

첫번째로는 배열을 어떻게 만들 수 있는지 배열을 선언하는 Array declaration에 대해서 알아보자 new라는 키워드를 이용해서 오브젝트를 만드는 것처럼 하는 거도 있고 대괄호를이용해서 할 수도 있다. 즉 인덱스를 이용해서 데이터를 검색하고 삽입 삭제하는 방법을 아는게 중요하다 다음으로 인덱스를 통해서 어떻게 배열에 접근하는지에 대해서 알아보자. fruit에 두가지의 문자열 데이터가 있고 사과그림과 바나나그림을 넣어서 작성해보면 아래와 같은데 fruits의 length는 2이고 배열은 숫자 인덱스를 전달하게되면(0~2) 인덱스에 해당하는 value들을 받아올 수 있다. 아래 그림에서 fruit[2]는 undefined가 나온다. 보통 배열의 첫번째 아이템을 찾을 때는 0을 많이 쓰고 배열의 마지막..

Obejct에 대해서

오브젝트는 무엇이고 어떻게 쓰면 좋은지 알아보자 Primitibe 타입은 변수 하나당 값을 하나만 담을 수가 있는데 아래는 추가해야될 것이 많을 때 관리하기 힘든 로직컬하게 그룹으로 묶어서 생각할 수 없는 코드 이다. 이것을 개선하고자 오브젝트를 쓴다. 전달할 때도 jay만 호출하면 되니까 print jay를 쓴다. 간편하게 데이터를 관리할 수 있다. 자바스크립트에서는 클래스가 없어도 중괄호를 이용해서 바로 오브젝트를 생성할 수 있다. 오브젝트를 만드는 방법으로는 bracket을 이용해서 만들 수도 있고 클래스를 이용해서 만들 수도 있다. 또 클래스를 template를 이용해서 만들 수가 있다. 자바스크립트는 동적으로 타입이 runtime때 결정되는 언어인데 그래서 아래와 같이 미친 짓을 할 수가 있다...