ORM으로 DB 작업하기
2021. 10. 31. 12:57
🚦 Server/Node.js
1. ORM으로 하는 DB 작업 mysql2 를 이용해서 DB에서 리소스를 가져오는 방법이 있다. sql문을 잘 다루지 못하는 경우 ORM 패키지 사용해서 JS로 작성한 DB 관련 코드를 자동으로 SQL문으로 변환시켜서 클라이언트 객체를 통해 DBMS로 전송시키는 방법이 있다. ORM (Object Relational Mapping) 이란? 데이터베이스에 있는 데이터를 하나의 객체에 매핑시키는 기술이다. 그니까 sql문을 작성하지 않고 JS 코드만으로 데이터를 가져오고 보낼 수 있다는 것이다. $ npm install mysql2 DB를 다룰때에 ORM을 쓰든 안쓰든 이 패키지가 필요하다. $ npm install sequelize sequelize-cli $ npx sequelize init init ..
express 시작하기
2021. 10. 28. 15:27
🚦 Server/Node.js
1. express 시작하기 패키지 설치 $ npm install express 설치하고 app.js 파일을 만들어보자. 외부 클라이언트로부터 받은 url path 부분이 '/hello' 라면, 그 함수가 실행된다. 이렇게 특정 조건이 만족되었을 때 실행되는 함수가 콜백이라고 했다. 특정 path에 대응하는 콜백을 route handler 라고도 한다. route handler : 특정 path를 대상으로 한, 특정 메소드를 가진 리퀘스트를 처리해주는 함수 route : 서버가 각 req의 path 부분을 보고 알맞은 작업을 수행하는 것 handler : 그 작업을 담당하는 존재 request : 이 객체를 통해 클라이언트가 보낸 객체를 다룰 수 있다. response : 이 객체를 통해 적절한 resp..
서드파티 모듈, npm 이해하기
2021. 10. 26. 10:38
🚦 Server/Node.js
모듈을 require 할 때의 과정 require('sample')로 모듈을 로드할 때, sample.js 라는 파일로 존재하는 모듈을 로드할 수 있고, sample 이라는 디렉토리 안의 모듈을 로드할 수 있다. 디렉토리 이름인 경우 오른쪽 절차에 따라 로드한다. 서드파티 모듈을 로드할 때는, 모듈의 이름이 디렉토리인 경우, 그 안에 package.json이라는 포함하고 있는 지 확인한다. 그렇니까 서드파티 모듈은 package.json 이라는 파일을 가지는 디렉토리인 것이다. 서드파티 모듈을 로드할 때의 경로 package.json 파일을 가진 디렉토리 형태로 존재하기 때문이다. 그렇기 때문에 서드파티 모듈의 이름이 디렉토리 이름과 같았던 것이다. 정리하자면 패키지 안에 package.json 파일이 ..
Node js 정리
2021. 10. 19. 21:03
🚦 Server/Node.js
1. require 함수가 리턴하는 객체는 상수로 대입하는 이유 자바스크립트에서 변수(variable)와 상수(constant)의 차이 변수에는 값을 원할 때마다 새롭게 지정해도 되지만, 상수의 경우 값을 한번 설정한 후에는 다른 값을 설정할 수 없다. 왜 그런 걸까? 모듈이 리턴한 객체를 변수로 받으면, 나중에 본인 또는 다른 개발자가 변수 m에 다른 값을 실수로 다시 지정하게 될 수도 있다. 이 경우, 그것 자체만으로는 에러가 발생하지 않지만, 의도하지 않은 오류가 발생할 수 있다는 점에서 오히려 더 위험하다. 하지만 모듈이 리턴한 객체를 상수로 받으면, 상수 m에 새로운 값을 다시 지정하려는 코드 자체에서 에러가 발생하기 때문에, 잘못된 코드를 작성하는 것을 미리 방지할 수 있다. 2. 모듈 내부의..
Node - 화살표 함수
2021. 8. 10. 11:46
🚦 Server/Node.js
화살표 함수는 function을 완전히 대체할 수는 없다. function add1(x+y){ return x + y; } const add2 = (x,y) => { return x + y; }; const add3 = (x,y) => x + y; const add4 = (x,y) => (x+y); // 헷갈릴 수 있으니 리턴값 묶어준다. function not1(x){ return !x; } const not2 = x => !x; 주의할 점 바로 객체를 리턴하는 경우에만 (소괄호) 필수!! const obj = (x, y) => ({x, y}); const obj = (x, y) => { return {x, y} }; 화살표 함수가 기존 함수를 대체할 수 없는 이유 : this 화살표 함수는 무조건 부..
Node - const, let 는 var를 대체한다.
2021. 8. 10. 11:23
🚦 Server/Node.js
var, const if (true){ var x = 3; } console.log(x); // 3 if (true){ const y = 3; } console.log(y); // Uncaught Reference Error: y is not defined function a(){ var z = 3; } console.log(z); // Uncaught Reference Error: z is not defined 블록{} 바깥에서 y를 접근하면 에러가 난다. variable은 function으로 감쌌을 때 밖에서 접근을 못한다. variable은 함수 스코프를 존중하고, const는 블록 스코프를 존중한다. let const a = 3; a = '5'; // 다른거 대입하면 에러 const b = { n..
Node - 호출 스택, 이벤트 루프
2021. 8. 10. 10:18
🚦 Server/Node.js
1. 호출 스택 function first(){ second(); console.log('첫번째'); } function second(){ third(); console.log('두번째'); } function third(){ console.log('세번째'); } first(); >> 세번째 두번째 첫번째 함수를 선언했다는 것은 메모리에 올렸다는 뜻이다. 메모리는 임시 저장 장치이다. 컴퓨터가 잠깐 기억하는 것이다. Anonymous는 파일이 시작될 때 생긴다. 항상 있다고 생각하면 좋다. 가상의 전역 컨텍스트이다. 호출스택은 자바스크립트가 어떻게 실행되는 건지 보여준다. 동기식 코드이다. 2. 이벤트 루프 function run() { console.log("3초 후 실행"); } console.lo..
Node - 정의, 특성, 역할
2021. 8. 9. 12:10
🚦 Server/Node.js
Node란 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 즉, 자바스크립트 실행기이다. 노드가 나오기 전에는 브라우저가 html 읽으면서 스크립트를 같이 읽는 방식으로 자바스크립트를 실행했다. 그러니까 html이 없었으면 스크립트를 못 읽었다. 브라우저가 스크립트를 읽은 것이긴 한데, 브라우저가 html에 종속되어 있었다. 노드가 나옴으로 인해서 자바스크립트는 html이나 브라우저의 종속성을 벗어난 것이다. Node는 서버가 아닌가요? 노드 자체는 서버가 아니다. 노드가 서버의 역할을 수행할 수 있는 것이다. 자바스크립트 코드로 서버 수행하는 코드를 넣으면 노드가 그것을 실행해주는 것이다. Javascript = 언어 Node = 런타임 자바스크립트 엔진 = V8 Node의 특성 1. ..
URL
2021. 8. 6. 21:55
🚦 Server/Node.js
http : 통신 규칙 도메인 이름, 호스트 : 인터넷에 연결되어있는 주소 포트 번호 : 한대의 컴퓨터가 어떤 서버와 연결되어 있나. path : 디렉토리 안의 어떤 파일을 가리키나 query string id값이 무엇이냐에 따라서 보여주는 것이 다르다.