== 트리거 SHOW TRIGGERS; - 현재 데이터베이스에 정의되어있는 트리거를 출력한다. drop trigger if exists TR_Posts; - TR_Posts 트리거가 존재할 경우 삭제한다. Sequelize.hook를 이용해 다른 TRIGGER를 실행할 수 있다. - TODO 다른 테이블을 Models폴더에서는 왜 참조가 안되는걸까? //postId는 변경되지 않는다. -- Posts 테이블 수정시 Images, Tags 데이터를 지우는 트리거 drop trigger if exists TR_Posts; DELIMITER $$ CREATE TRIGGER TR_Posts AFTER UPDATE ON Posts FOR EACH ROW BEGIN DELETE FROM Images WHERE po..
14. tag와 img의 기본키가 곱연산 되는 문제를 해결하자. SELECT u.userId, u.nickname, u.profileImg, p.postId, p.reBlog, p.title, i.img, p.content, t.tag, CASE WHEN p.postId IN (SELECT postId FROM Favorites WHERE userId=1) THEN "Y" ELSE "N" END AS favorite, (SELECT COALESCE(MIN('Y'), 'N') FROM Follows WHERE EXISTS (SELECT 1 FROM Follows WHERE followUserId = 1 and followerUserId=p.userId)) AS follow, (SELECT COUNT(*) ..
TODO - 만약 데이터가 없을 때 NULL을 넣는 방법 - 리블로그는 없을 경우 NULL로 삽입한다. - models를 npx로 가져왔을 때 지금 생성된 테이블을 기준으로 models가 만들어질 수 없는가? 이번프로젝트의 코드최적화 방법 - Router를 메인에서 줄이기 - Router에서 동일한 url에 .get과 .post를 route를 사용해 메소드별로 분류하는 것 - 비밀번호를 .env에 저장하는 것 이번 프로젝트의 목표 - 무슨 기술을 할지, 어떤 방향성을 가지고 갈 지 DB에서 외래키를 설정할 때 동일한 기본키를 설정해도 가능하다. 트리거 : 누군가 지정한 TABLE에 데이터를 넣을 경우 실행하도록 설정 (기능 중 하나) ex) 누군가 Favorites에 데이터를 추가할 경우 자동적으로 Al..
== Socket == 소켓 : 데이터를 송수신하기 위해 반드시 거쳐야 하는 연결부 패킷 : 소켓을 통해 송수신하는 데이터 덩어리 Socket.io - 웹 소켓을 포함해, 웹소켓을 사용하지 못하는 환경에서도 웹소켓과 비슷하게 사용 가능하도록 구현해놓은 라이브러리 $ npm install socket.io app 객체 : express로 기존처럼 API를 개발하거나 프론트엔드 파일을 서빙하는 용도로 사용 io 객체 : 기존처럼 클라이언트와 데이터를 주고 받는 용도로 사용 // Socket은 Express와 별도로 움직여야 하는데 데이터 통신은 무엇을 기준으로 하는가? -- Node.js Socket io.on("connection", (socket) => {} ); - 소켓 연결 이벤트 핸들링 socket..
-- 게시글 상세 SQL SELECT p.postId, p.userId, u.nickname, p.title, p.artist, p.showDate, p.description, p.img, CASE WHEN p.postId IN (SELECT postId FROM Favorites where userId = 1) then "TRUE" else "FALSE" end as favorite FROM Posts AS p JOIN Users AS u on p.userId = u.userId; - 출력 데이터 p.postId, p.userId, u.nickname, p.title, p.artist, p.showDate, p.description, p.img, favorite 유무 - Favorites 테이블에서 해..