안녕하세요! 오늘은 velog 클론 코딩 5주차에 있었던 작업을 한 번 정리해보려고 합니다.
오라클 서버에 있는 DB에 접속할 수 없는 문제
Oracle cloud 서비스는 기본적으로 ssh key를 미리 등록해놓아야 접근이 가능합니다.
따라서 pg를 통해 코드 상에서 DB connection을 맺을 때나, pgAdmin을 통해서 접근할 때 ssh 키를 같이 넘겨줘야 할텐데요...
왜인지 모르게 이게 되질 않았습니다...
어디가 관련 설정인 거죠..? ㅠ
pgAdmin에서는 SSL 관련 설정을 찾기는 했지만.. 이것도 정상 동작하지 않았습니다.
그러나 위 방법들은 Oracle Cloud 계정 설정을 변경하면서 확인하며 진행해야하는 것들이라...
현재 제 계정이 아니라서 여러 가지 작업들을 원활하게 할 수가 없었기 때문에..
일단은 다른 방법으로 개발을 진행하기로 결정했습니다.
localhost를 외부에 공개하는 방안
이 방법은 니꼴라스 아저씨 영상을 보다가 발견한 방법인데요!
바로 제 PC에 서버를 구축하고 이를 외부에서 접속할 수 있게 공개하는 방법입니다!
두 가지 방법을 함께 소개합니다.
첫 번째는 ngrok 입니다!
장점
단점
아무래도 오픈소스가 아니라 상업적으로 판매하는 제품이다 보니
무료 버전에 대한 한계가 명확합니다!
하지만 localtunnel 보다 훨씬 접속 속도가 빠르고, 디버깅도 용이합니다.
두 번째는 localtunnel 입니다.
장점
단점
$ unzip ~.zip
$ ./ngrok authtoken [token]
$ npm run serve
$ ./ngrok http [서버가 실행된 포트 번호]
PostModel은 사용하지 않는 것으로 보임
sequelize 패키지를 사용해서 db와 ORM을 하고 있습니다!
그럼 잠깐 ORM 개념에 대해 소개하고 넘어가겠습니다.
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 행위
[ URL ] / posts
DB에 존재하는 모든 포스팅을 가져옵니다. (날짜 순 정렬 필요)
SELECT * FROM public."BLOG_POSTS"
[ URL ] / @ [ userName ]
특정 사용자가 작성한 포스팅을 모두 가져옵니다.
SELECT * FROM public."BLOG_POSTS"
JOIN public."BLOG_USERS"
ON public."BLOG_USERS".user_id = public."BLOG_POSTS".fk_user_id
WHERE velog_name='${userName}'
쿼리 동작
두 개의 table 조인 후 userName과 일치하는 정보 모두 리턴