https://www.bezkoder.com/react-jwt-auth/
여러 예제가 있는 좋은 곳이다.
그런데.... 똑같이해도 실행이 되지 않는다.
ConnectionError [SequelizeConnectionError] : connect ETIMEDOUT
내용이야 뭐 연결시간 초과인데
원인은 해당 소스가 조금 오래되어서 약간의 변경이 필요하다.
Sequelize 설정에서
operatorsAliases : true 또는 false 로 되어있는것이 1 또는 0으로 바뀌어야 한다.
operatorsAliases :1
그리고 mysql 의 기본포트인 3306을 사용하면 문제가 없는데
다른 포트를 사용하는 경우에는 port정보를 넣어줘야 한다.
(근데 다들 포트를 변경안하는지 다른 예제에도 port 설정이 안보인다 ㅠ.ㅠ)
아래와 같이 포트정보를 추가하면 됨.
const config = require("../config/db.config.js");
const Sequelize = require("sequelize");
const sequelize = new Sequelize(
config.DB,
config.USER,
config.PASSWORD,
{
host: config.HOST,
port: config.PORT,
dialect: config.dialect,
operatorsAliases: 1,
pool: {
max: config.pool.max,
min: config.pool.min,
acquire: config.pool.acquire,
idle: config.pool.idle
}
}
);
정상적으로 설정이 되고 DB 접속에도 문제가 없으면
init에 의해 Create Table users, user_roles 및 select 쿼리가 로그로 찍힘.
user table 생성, role table 생성, role_user table 생성
role.id, user.id 를 참조하는 fk가 role_user table에 추가
ps : backend 를 spring으로 추가로 테스트하면
nodejs실행시키면서 자동으로 table 생성이 되었기 때문에
run하면 제약조건 생성 등 오류가 나지만
서버는 정상 가동 됨.
(table 모두 drop하고 가동 시키면 정상으로 될 것임)
node로 생성했을 때 table 설정에서 몇가지 빠지는게 있다.
encoding이 latin으로 되고
id 가 int 형인데 auto inc 가 꺼진채로 생성된다.
그리고 날짜도 default=now()로 넣어줘야한다.
user_role table에 제약조건이 걸려서 role table의 id를 auto inc 하려고 했더니 안되네...
user_role table 삭제 -> role table에 auto inc 추가 -> user_role table 추가로 재설정 함.