• Sequelize 테이블 별명 사용하기

    Categories 테이블을 만들었는데 셀프조인을 할 예정입니다. 왜냐면 테이블 하나만 가지고 트리구조를 만들거거든요. sequelize-cli를 사용해서 디렉토리가 models, migrations, seeders 이렇게 3개가 존재합니다. 아래 코드는 models 폴더 안에 생성된 단수 파일명으로 생성된 category.js입니다. migrations/****-create-category.js 파일도 아래와 똑같은 구조로 수정해주어야 합니다. DataTypes만 Sequelize로 수정해주면 두 파일간의 내용이 똑같아지니 다른 튜토리얼을 보고 따라하시면 됩니다....

  • MySQL 계층형 구조 테이블 작성해서 JSON데이터로 확인하기

    테이블 구조는 간단합니다. Products 테이블에 있는 cat_id가 Categories 테이블에 있는 cat_id를 참조합니다. 현재 Categories 테이블을 참조한 상태로 조인한 쿼리는 다음과 같습니다. CREATE TABLE Products ( prod_id INT, prod_name VARCHAR(128), prod_price INT, cat_id INT PRIMARY KEY (prod_id), FOREIGN KEY (cat_id) REFERENCES Categories(cat_id) ); CREATE TABLE Categories ( cat_id INT, cat_name VARCHAR(64),...

  • Koa JWT 두가지 방법으로 전송하기

    헤더에 실어서 보내는 방법 ctx.set(name, value); name: 헤더 이름 value: 토큰 값을 여기에 작성한다. 응답헤더에 토큰을 넣어 보내게 되면 브라우저에서 헤더에 있는 토큰을 가져다 브라우저의 localStorage로 집어넣어 토큰을 유지시킵니다. 이후 토큰의 유효기한이 되기 전에 요청헤더에 토큰을 넣어 서버에 보내면 디코딩후 유효성 검증을 거친 후 토큰을 새로 발급해 앞선 방법과 똑같은...

  • Passport 구글 로그인 가져오기

    작업환경은 NodeJS, KoaJS, koa-passport, passport-google-oauth-jwt입니다. passport-google-oauth-jwt모듈 가이드에 따라 작성을 했습니다. 제 개인적인 패스포트에 대한 이해는 이렇습니다. 다른 사이트에서(예를 들어 구글) 로그인된 유저의 정보를 가져온다. db에 유저의 회원정보가 있나 조회한다. 있으면 로그인시킨다. 없으면 가져온 유저의 정보로 회원 생성을 시킨다. 생성시킨후 로그인시킨다. 로그인할때 세션에 정보를 저장시킨다. 혹은 쿠키에 jwt를 담아 저장한다. 로컬...

  • Koa 가독성 좋게 재작성하기

    작업환경은 Node.js v8, Koa.js, Sequelize.js(MySQL)입니다. API 작성전 모듈을 작성합니다. // services/user.js const Users = require('../db/models').User; 먼저 sequelize 폴더에서 Users테이블을 가져옵니다. cli를 사용해서 작성했기 때문에 파일명이 자동생성되어 단수 로 생성됨을 참고 바랍니다. 테이블이름은 복수 입니다. // services/user.js const addUser = user => Users.create(user); const getUserByUserId = userId => Users.findOne({ where: {...

  • Sequelize 모델 정의하기

    본 포스팅은 sequelize-cli를 사용하였습니다. 디렉토리 구조는 아래와 같습니다. ├─config │ └─config.json ├─migrations │ (...) ├─models │ └─index.js └─seeders (...) 이 글을 쓰는 목적은 sequelize가 v4로 업데이트 되면서 바뀐 사항들이 꽤나 있습니다만, 포스팅이나 튜토리얼을 보면 예전방식으로 쓰여진 곳이 많더라구요. 대부분 deprecated메시지를 띄울뿐 에러는 띄우지 않는데 models폴더에서 테이블 정의할때 기본키(PK), 외래키(FK) 지정에...

  • Javscript 반복문

    for for (let i = 0; i < 10; i++) { // (초기값; 조건식; 증감식) console.log(i); } 반복횟수를 정할 수 있기 때문에 몇번 반복될지 알때 사용합니다. for in문 const object = { 1: 'a', 2: 'b', 3: 'c', 4: 'd' }; // 객체 for (let i in object) { console.log(object[key]);...

  • 개발 포스트 북마크

    개발 블로그에서 나중에 다시 봐야겠다 싶은 포스트들을 모아봤습니다. 풀스택 NEMV (NodeJS, ExpressJS, MongoDB, VueJS) 모던웹 만들기 KoaJS, ReactJS, Redux, Sagas, MongoDB (영문) 94 fullstack examples (영문) 풀스택 웹개발 공부가이드 왜 ReactJS와 NextJS를 VueJS, AngularJS 대신 골랐는지 (영문) CSS 레이아웃 익히기 웹 쿠키와 세션 쿠키와 세션 2 쿠키와 세션 3 웹스토리지...

  • ES6 배열 메서드

    array.forEach() 패턴1 let arr = [1, 2, 3, 4, 5]; let result = []; arr.forEach(i => { result.push(i - 1); // 모든 원소값에서 1씩 감소 }); console.log(result); // [0, 1, 2, 3, 4] 패턴2 let arr = [1, 2, 3, 4, 5]; arr.forEach((val, idx, arr) => { // 매개변수는 값,...

  • Javascript 함수

    function a(x) { const y = x + 1; return y; // 함수내 기능을 반환합니다. 즉 y값을 내보내고 함수를 종료합니다 } const a = function(x) { // 함수 선언시 괄호안의 값은 매개변수(parameter)라고 부릅니다. const y = x + 1; return y; }; 함수 내에서 return 이후 입력한 코드는 실행되지 않습니다....