2020. 2. 24. 01:21ㆍ프로그래밍-Web/Node.js
무려 일곱시간을 헤맸다 ㅠㅠ
요게 자잘한 이슈들이 많아서 쉽게 접속이 되질 않는다.
Sequelize는 Node.js에서 제공하는 ORM이다.
ORM은 Object-Relation Mapping의 약자로, 딱 봐도 객체와 관련이 있어 보인다.
직역하면 '객체와의 관계 지도'정도 될 터인데, 사실 이놈을 사용함으로서 얻어지는 장점이 확 와닿진 않는다.
그러니까 도식화시켜보면
원래 이렇게 DB 접근을 위해서는, DB와 소통되는 언어인 쿼리를 사용해야 하지만
ORM이라는 친구가 있으면, 이렇게 DB와 대신 이야기해준다.
그러니까 쿼리를 잘 모르는 사람에게 매우 좋은 템일테다.
쿼리가 빠지면 코딩하는 양도 줄긴 할테고, 무엇보다 분업하기가 쉬울테니..
자바는 JPA라는 유명한 ORM 기술 표준이 있고, 툴로는 하이버네이트를 많이들 사용한다.
사실 ORM이 유명무실하다는 의견도 많다.
https://okky.kr/article/286812
그렇지만 막상 어플들 밑단 까보면 죄다 ORM이 깔려있다고도 하고...
무튼 이런 얘길 하려던 것이 아니고
이놈의 MySQL과 Sequelize의 연결이 아주 주옥같았다는 얘길 하고 싶었다.
일단 정리!
1) Sequelize 패키지 설치
일단 여느 노드작업과 마찬가지로 pug를 프론트로 하는 패키지 먼저 만들어주고
반드시 '글로벌'로 MySQL2 디펜던시를 달아준다
얘를 달아야 노드가 MySQL을 인식할 수 있다
다음엔 MySQL을 포함한 Sequelize 패키지 생성
그리고 난 후, cli를 붙인 명령어를 실행해주면 Sequelize를 CLI로 쓸 수 있다.
2) Sequelize의 구조
Sequelize도 일종의 라우터 같은 형태라서
요 models 폴더 안에 있는 index.js가 핵심이다
얘를 열어보면 ORM구동에 필요한 여러 모듈들을 불러오는데
우리가 주목해야 할 부분 첫째는 저기 1번 Sequelize부분.
쟤는 말그대로 Sequelize모듈을 불러온다
그럼 걔는 뭐하는 애냐!
저기 2번 config 객체를 보면 알 수 있다
기본적으로 config 객체는 config 폴더안의 json파일을 참고한다
그리고 sequelize를 실행하면, config.json안에있는 config.xxx 들을 읽어온다
그럼 config 파일도 까보자
요래 되어있다.
저기 포트설정 객체에서 development 파트만 사용한다고 했으니, 우리는 development의 설정만 DB와 동일하게 바꿔주면된다.
3) MySQL설치
사실 요 부분이 아주 중요!
왜냐하면 개발자 웹프로그래밍 작업 피씨에 MySQL이 설치되지 않은 경우가 덜 흔하기 때문
원래는 위에처럼 설정하고 Sequelize db:create를 하면
"database"이름을 가지고 있는 스키마가 하나 생성된다
하지만 에러 꽝!
보통 저기 Access 에러는
구글링 해보면 두 가지 이유로 생긴다
- 비번이 틀렸거나
- MySQL을 안켰거나
하지만 다 했다...
그래서 MySQL을 뜯어봤다.
버전이 5.1이다.
MySQL 버전은 무조건 5.7로 사용하는 것이 좋다
(저기 Win32는 무시해도 된다.)
하지만 이미 설치된 MySQL덕에 Sequelize가 포트를 잡지 못하는 현상이 발생한다.
그래서
https://dev.mysql.com/downloads/windows/installer/
어쩌겠어
MySQL 새로 설치가 답이다
여기서 조심
반드시 msi 인스톨러 버전으로 받아야, 포트를 새로 팔 수 있다.
cmd로 조작하는 버전을 받게 되면 변수 설정이 너무 힘들다
쟤를 받고나서 설치 쭉쭉진행(설치 과정은 중요한 부분만 설명한다)
일단 여기에서 Visual Studio 요구 사항을 제대로 설치해야 된다.
그래야 워크벤치가 돌아감
(나는 하이디를 쓰니까 노상관)
그리고 포트 설정부분에서 !!
저거 3306이 아닌 다른걸루 한다
요게 가장 중요하다.
안그러면 충돌난다.
왜냐하면 3306은 기버전 MySQL이 이미 쓰고 있기 때문이다.
이 과정에서 잠깐 cmd를 켜보면
요래 뜬다. 절대 손대지 말자.
4) Config.json 수정
간단하다
포트만 추가해주면된다.
이걸 몰라서 그 쌩난리를 쳤...
5) 결과
뾰로롱~
하이디에도 잘 들어갔다
이제 Sequelize 쓸 준비 완료!! ㅠㅠ
사실 근본적인 해결을 한 것은 아니다
어쨋든 3306은 못쓰니까...
MySQL 버전 맞추라고 하는 얘기들이 많던데, 아마 Sequelize와 호환되는 버전이 따로 있겠거니 싶다.
'프로그래밍-Web > Node.js' 카테고리의 다른 글
[이슈] 배열에 대한 비동기 처리 방법 (5) | 2021.01.28 |
---|---|
[이슈] .then vs await 비교 (0) | 2021.01.28 |
[Issue] 객체가 더럽게 들어오는 경우 (0) | 2021.01.08 |
[Node.js] 콜백함수와 Promise(2) (0) | 2020.02.20 |
[Node.js] 콜백함수와 Promise(1) (0) | 2020.02.20 |