반응형

Server/Node.js (Express) 9

[Node.js] Sequelize : ORM(Object-relational Mapping) 사용해보기

Sequelize란? 이번 포스팅에서는 Node.js의 ORM 기술인 sequelize를 사용해보도록 하겠다. 시퀄라이즈는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다. 시퀄라이즈는 자바스크립트 구문을 알아서 SQL로 변환해주어서 좀 더 의존성이 낮은 프로그래밍을 할 수 있도록 도와준다. 또한 어느 정도 문법이 호환되므로 MySQL 뿐만 아니라, MariaDB, PostgreSQL, SQLite 등 다른 데이터베이스로 전환이 비교적 자유롭다. ※ 좀 더 자세한 내용은 아래 URI에서 확인하도록 하자. [Database] ORM(Object-relational Mapping)이란? ORM이란? ORM(Object-relational Mapping)이란 OOP 간의 호환되지 않는 데이터를..

[Node.js] await vs return vs return await: 비동기 이해하기

비동기 함수를 작성할 때 await과 return을 하는 것 그리고 return await을 사용하는 것에는 실행에 차이가 있다. 이것을 올바르게 사용하지 않으면 우리는 예상치 못한 값을 반환받을 수 있다. 이 포스팅은 그러한 버그를 미리 방지하고 비동기에 대한 이해를 확장하고자 작성한다. 아래는 async함수이다. async function waitAndMaybeReject() { // Wait one second await new Promise(r => setTimeout(r, 1000)); // Toss a coin const isHeads = Boolean(Math.round(Math.random())); if (isHeads) return 'yay'; throw Error('Boo!'); } 이..

[Node.js] CRUD: foreign key를 이용해 blog 구조 만들기 (2)

이번에는 조금 심화로 들어가 보도록 하겠다. 이전 게시물에서는 하나의 CRUD만을 만들었다면 이번에는 실제 blog가 가지고 있는 구조로 CRUD를 확장해 보도록 하겠다. 한번 블로그를 상상해보자. 먼저 게시글들을 포함하는 category가 있을 것이다. 그리고 각각의 게시물들은 제목과 내용이 존재할 것이고, 마지막으로 댓글을 달 수 있는 기능이 있을 것이다. 여기서 중요한 포인트는 댓글은 게시글에, 게시글은 카테고리 안에 포함되어야 한다는 것이다. 눈치 챘을지 모르겠지만 우리는 이미 카테고리는 만들었다. 이전 포스팅에서 만들었던 blogs.js가 바로 그것이다. 이 시점에서 프로젝트를 좀 더 구조적으로 만들기 위해서 디렉토리를 재구성할 필요가 있다. blogs: 카테고리 articles: 게시글 com..

[Node.js] CRUD: RDS를 이용하여 동적으로 구성하기 (1)

CRUD란? CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 게시물을 올리고, 읽고, 수정하고, 삭제하는 것을 예로 생각하면 이해하기 편리하다. 이러한 CRUD는 http method get(read), post(create), put(update), delete(delete)로 구현할 수 있다. 각각의 http 메서드들은 해당하는 각각의 기능만 수행하는 것은 아니지만 통상적으로 rest api(참고: https://ooeunz.tistory.com/11?category=814267)를 따라 위와 같은 역할로 메서드들을 기능적으로 분리하여 사용한다. 이번 포스팅은 3번에 걸..

[Node.js] Express와 CSV를 이용해 조 편성 애플리케이션 만들기

이번 포스팅에서는 express를 이용해서 조원들을 검색해보고, 조를 섞어보는 간단한 애플리케이션을 만들어보도록 하겠다. 완성된 프로젝트의 구조는 아래와 같다. public 디렉토리에 csv라는 디렉토리를 만들어주고 해당 파일에 member와 group이라는 이름의 csv파일을 만들어주도록 한다. ※ CSV란? Excel과 DB와 호환되는 텍스트 형식이다. 첫 번째 줄에는 필드 이름이 들어가고, 2번째 줄부터 각 row에 해당하는 값이 들어 있다. 우리는 이제부터 여기있는 csv파일을 데이터로 사용하여 데이터를 불러와 조회 및 조작해보도록 하겠다. 먼저 프로젝트 설계를 해보도록하겠다. 서버를 작동시켰을 때, localhost:3000/api/group group전체의 정보를 조회한다. localhost:..

[Node.js] npm이란?

Node Pacackage Manager. 이하 npm은 이름 그대로 노드 패키지 매니저이다. 세상에는 많은 자바스크립트 프로그래머들이 있고, 그들이 유용한 자바스크립트 패키지들을 이미 만들어 두었고, 그런 코드들이 공개되어 있는 것이 바로 npm이다. npm은 세계 최대 규모의 패키지들을 보유하고 있다. 이러한 패키지들은 노드의 생태계를 더욱 견고하게 만들었다. npm에 업로드된 노드 모듈을 패키지라고 부른다. 모듈이 다른 모듈을 사용할 수 있는 것처럼, 패키지도 다른 패키지를 사용할 수 있다. 이러한 관계를 의존 관계라고 한다. https://www.npmjs.com/ npm | build amazing things Bring the best of open source to your company n..

[Node.js] 노드 내장 객체

global 노드의global 객체는 브라우저의 window와 같은 전역 객체이다. 따라서 모든 파일에 접근 할 수 있고, 생략할 수 있다. 아래는 global객체안에 포함된 다양한 객체들의 나열이다. console console은 보통 디버깅을 위해 사용된다. 개발 중 변수에 값이 제대로 들어가 있나 확인하거나, 에러 발생 시 에러 내용을 콘솔에 표시하기 위해 사용하거나, 코드 실행 시간을 알아보려고 할 때도 사용한다. 아마 이 객체는 console.log() 메서드로 익숙하게 사용 해보았을 것이다. console.time(레이블) : console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd 사이의 시간 측정한다. console.log(내용) : 평범한 로그를 콘솔에..

[Node.js] 운영체제 별 node 설치하기

Window Node.js의 설치방법은 매우 간단합니다. 먼저 아래의 url로 접속합니다. Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 그리고 원하는 버전의 노드를 다운로드하면 됩니다. 그런데 LTS 버전과 Current 버전이 있는데, 어떤 버떤 버전을 설치해야 할까요? LTS와 Current 버전의 차이 LTS : 기업을 위해 3년간 지원하는 버전입니다. 짝수 버전만 LTS 버전이 될 수 있으며 서버를 안정적으로 운영해야 할 경우 선택하면 됩니다. 하지만 최신 기능을 사용하지 못할 수 있습니다. Current : 최신 기능을 담고 있는 버전입니다. 다소 실험적인 기능이 들어있어 예기..

Node.Js란?

Node.js 는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 RunTime(특정 언어로 만든 프로그램들을 실행할 수 있는 환경)이다. Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적이며, Node.js의 생태계인 npm이나 yarn은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이다. 서버와 클라이언트의 관계 서버란 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말한다. 서버의 대비되는 개념으로 클라이언트(client)라는 개념이 있다. 이 둘의 관계는 요청과 응답으로 볼 수 있는데, 클라이언트는 서버에게 요청하고, 서버는 이에 응답한다. 예를 들어 우리가 검색창에 www.naver.com이라고 입력을 했다고 치자. 그다음 동작으로 우리는..

반응형