Node.js 38

시퀄라이즈 쿼리

윗 줄이 SQL문, 아랫 줄은 시퀄라이즈 쿼리(자바스크립트) 윗 줄이 SQL문, 아랫 줄은 시퀄라이즈 쿼리(자바스크립트) 특수한 기능들인 경우 Sequelize.Op의 연산자 사용(gt, or 등) 여러 개를 사용 수정해야할 때는 id: { [Op.in]: [1, 3, 4] } 이런식으로 사용할 수 있다. 관계 쿼리 결괏값이 자바스크립트 객체임, findOne, findAll include로 JOIN 과 비슷한 기능 수행 가능(관계 있는 것 엮을 수 있음) has many이면 자동으로 복수로 바뀜 Comment -> Comments 다대다 모델은 다음과 같이 접근 가능 get+모델명으로 관계 있는 데이터 로딩 가능 -> 나는 이게 더 편하지만 성능이 더 좋은 것을 활용하자. as로 모델명 변경 가능 (헷..

Node.js 2020.12.30

시퀄라이저 모델 자료형

테이블에 대응되는 시퀄라이즈 모델 생성 const Sequelize = require('sequelize'); module.exports = class User extends Sequelize.Model { static init(sequelize) { return super.init({ // 아이디는 자동으로 생성해주기 때문에 생략 가능 name: { type: Sequelize.STRING(20), allowNull: false, unique: true,// 고유하게 만들어줌 }, age: { type: Sequelize.INTEGER.UNSIGNED, allowNull: false, }, married: { type: Sequelize.BOOLEAN,// SQL에서는 TINYINT allowNull:..

Node.js 2020.12.29

시퀄라이즈 ORM와 Nodejs에 mysql 연결

SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리 ORM: Object Relational Mapping: 객체와 데이터를 매핑(1대1 짝지음) MySQL 외에도 다른 RDB(Maria, Postgre, SQLite, MSSQL)와도 호환됨 자바스크립트 문법으로 데이터베이스 조작 가능 시퀄라이즈 예제는 https://github.com/zerocho/nodejs-book/tree/master/ch7/7.6/learn-sequelize 프로젝트 세팅 후, 콘솔을 통해 경로로 이동한 후 package.json 작성 nodejs 에 mysql 연결하기!! 시퀄라이즈 명령어 사용하기 위해 sequelize-cli 설치 mysql2는 MySQL DB가 아닌 드라이버(Node.js와 MySQL을 이어주는 역할)..

Node.js 2020.12.28

템플릿 엔진 사용하기

템플릿 엔진 HTML의 정적인 단점을 개선 반복문, 조건문, 변수 등을 사용할 수 있음 동적인 페이지 작성 가능 PHP, JSP와 유사함 Pug(구 Jade) 문법이 Ruby와 비슷해 코드 양이 많이 줄어듦 HTML과 많이 달라 호불호가 갈림 익스프레스에 app.set으로 퍼그 연결 res.render에서 두 번째 인수 객체에 Pug 변수를 넣음 res.locals 객체에 넣는 것도 가능(미들웨어간 공유됨) =이나 #{}으로 변수 렌더링 가능(= 뒤에는 자바스크립트 문법 사용 가능) 퍼그 파일 안에서 변수 선언 가능 뒤에 자바스크립트 사용 변수 값을 이스케이프 하지 않을 수도 있음(자동 이스케이프) for in이나 each in으로 반복문 돌릴 수 있음 ( for 도 가능 ) 값과 인덱스 가져올 수 있음..

Node.js 2020.12.23

라우터 객체로 라우터 분리와 req, res 객체 살펴보기

코드 : const express = require('express'); const morgan = require('morgan'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const dotenv = require('dotenv'); const path = require('path'); // 라우터를 분리하는 이유 -> 너무 많아지면 코드도 복잡해지고 가독성이 떨어짐 dotenv.config(); const indexRouter = require('./routes'); // index const userRouter = require('./routes/user');// user con..

Node.js 2020.12.22

미들웨어

익스프레스는 미들웨어로 구성됨 요청과 응답의 중간에 위치하여 미들웨어 app.use(미들웨어)로 장착 위에서 아래로 순서대로 실행됨. 미들웨어는 req, res, next가 매개변수인 함수 req: 요청, res: 응답 조작 가능 next()로 다음 미들웨어로 넘어감. 에러가 발생하면 에러 처리 미들웨어로 err, req, rs, next까지 매개변수가 4개 첫 번째 err에는 에러가 관한 정보가 담김 res.status 메서드로 HTTP 상태 코드를 지정 가능(기본값 200) 에러 처리 미들웨어를 안 연결해도 익스프레스가 에러를 알아서 처리해주긴 함. 특별한 경우가 아니면 가장 아래에 위치하도록 함. const express = require('express'); const morgan = requir..

Node.js 2020.12.21

익스프레스 (express)

1. Express 소개 http 모듈로 웹 서버를 만들 때 코드가 보기 좋지 않고, 확장성도 떨어짐 프레임워크로 해결 대표적인 것이 Express(익스프레스), Koa(코아), Hapi(하피) 코드 관리도 용이하고 편의성이 많이 높아짐 www.npmtrends.com/express-vs-koa 여기서 트렌드를 비교해서 사용하면 좋다. ( 업데이트를 최근에 한 것, 가장 많이 사용하는 것 ) 2. package.json 만들기 직접 만들거나 npm init 명령어 생성 nodemon이 소스 코드 변경 시 서버를 재시작해줌 3. app.js 작성하기 서버 구동의 핵심이 되는 파일 app.set(‘port’, 포트)로 서버가 실행될 포트 지정 app.get(‘주소’, 라우터)로 GET 요청이 올 때 어떤 동..

Node.js 2020.12.18

npm 명령어들과 배포방법

npm 명령어 npm outdated: 어떤 패키지에 기능 변화가 생겼는지 알 수 있음 npm update: package.json에 따라 패키지 업데이트 npm uninstall 패키지명: 패키지 삭제(npm rm 패키지명으로도 가능) npm search 검색어: npm 패키지를 검색할 수 있음(npmjs.com에서도 가능) npm info 패키지명: 패키지의 세부 정보 파악 가능 npm login: npm에 로그인을 하기 위한 명령어(npmjs.com에서 회원가입 필요) npm whoami: 현재 사용자가 누구인지 알려줌 npm logout: 로그인한 계정을 로그아웃 npm version 버전: package.json의 버전을 올림(Git에 커밋도 함) npm deprecate [패키지명][버전] [..

Node.js 2020.12.17

node_modules, SemVer 버저닝

npm install 시 node_modules 폴더 생성 내부에 설치한 패키지들이 들어 있음 express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치됨 package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시함 npm install --save-dev 패키지명 또는 npm i -D 패키지명 devDependencies에 추가됨 npm install --global 패키지명 또는 npm i -g 패키지명 모든 프로젝트와 콘솔에서 패키지를 사용할 수 있음 예제는 rm –rf(리눅스의 삭제 명령)를 흉내내는 rimraf 패키지의 글로벌 설치 npx로 글로벌 설치 없이 글로벌 명령어 사용 가능 글로벌은 되도록이면 안쓰는게 좋음 SemVer 버저닝 노드 패키지의 버전은..

Node.js 2020.12.17

npm, package.json 패키지 관리

npm이란 Node Package Manager 노드의 패키지 매니저 다른 사람들이 만든 소스 코드들을 모아둔 저장소 남의 코드를 사용하여 프로그래밍 가능 이미 있는 기능을 다시 구현할 필요가 없어 효율적 오픈 소스 생태계를 구성중 패키지: npm에 업로드된 노드 모듈 모듈이 다른 모듈을 사용할 수 있듯 패키지도 다른 패키지를 사용할 수 있음 의존 관계라고 부름 package.json 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함 동일한 버전을 설치하지 않으면 문제가 생길 수 있음 노드 프로젝트 시작 전 package.json부터 만들고 시작함(npm init) 속성들 package name: 패키지의 이름..

Node.js 2020.12.16