• 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: {...