[새싹X코딩온] 2차 프로젝트 (2)

Sohee Kwon·2024년 1월 1일

2023-12-29 (4일차)

📌 To Do

  • 로그아웃
  • 채팅 관련 (sequelize, SQL)

💡 Try

cors

  • CORS는 Cross Origin Resource Share의 약자이다.
    여기서 Origin은 서로 다른 호스트와 포트를 포함한 데이터의 출처를 말한다.
  • CORS 정책은 일단 Origin이 다르면 데이터 통신을 막는다.
    따라서 필요한 경우 데이터를 보내 주는 서버에서 CORS를 허용해 주어야 한다.
const cors = require("cors");
app.use(cors()); //모든 접근 허용

📃 기록

처음에는 chat_room, message 테이블만 사용해서 채팅방과 채팅메세지를 저장해야 겠다고 생각했는데, 채팅방에 누가 있는지 확인도 해야해서 중계 테이블로 chat_member 테이블을 만들고 ERD를 확정했다.

이전 프로젝트에서는 초반에 ERD를 작성해서 ERD에 있는 모든 테이블을 한번에 sequelize와 DB를 만들었더니, 개발을 하면서 중간에 DB 구조가 바뀔때마다 모든 사람이 DB를 수정해야하는 번거로움이 있었는데

이번에는 시작할 때 초기 ERD를 작성하고 크게 기능을 묶어서 회원, 게시판, 채팅, 소모임, 유기견으로 시작할 때마다 해당하는 기능의 sequelize, sql을 진행하고, API를 다 작성하면 다음 기능 sequelize, sql 만들고 이런 방식으로 진행했더니 확실히 DB를 수정하는 일이 줄어들었던 것 같았다.



2023-12-30 (5일차)

📌 To Do

  • socket.io 연결
  • 채팅방 입장 및 DB 저장

💡 Try

socket.io

  • 이전 미니 프로젝트에서는 서버 측에서 socket을 사용할 때, 소켓 함수를 server.js 파일에 한번에 작성해서 사용했는데 그렇게 하면 코드가 길어질 것 같아서 이번에는 socket.js 파일을 나누어서 사용해 보았다.
// index.js
const connectSocket = require("./socket");
connectSocket(server);

//socket.js
module.exports = (server) => {
  const io = require("socket.io")(server, {
    cors: {
      origin: "http://localhost:3000",
    },
  });

  io.on("connection", (socket) => {
    console.log("socket id", socket.id);
  });
};

💣 트러블 슈팅

  • chat_member(id, user_id, chat_id) id is null 이런 오류가 발생했는데

    • sequelize는 기본키가 없으면 임의로 id라는 기본키를 추가해서 발생한 오류로 chat_member 테이블에 기본키를 추가해서 해결💥
  • sequelize에서 NOW() 사용시에 현재 시간이 정확하게 저장되지 않음

    • sequelize timezone을 설정해서 해결💥
      const sequelize = new Sequelize(
      config.database,
      config.username,
      config.password,
      { ...config, timezone: "Etc/GMT-9" }
      );

📃 기록

트러블 슈팅이 위에는 짧게 기록되어 있지만 이외에도 postman으로 확인할 때 method를 잘못 입력해서 오류가 몇 번 있었는데...

postman이랑 친해지는 과정이라고 생각해서 트러블 슈팅에는 작성하지 않았다.🥲
그리고 다음에는 오류 메세지도 캡쳐해서 같이 기록하는게 좋을 것 같다.


참고자료

profile
개발자 성장로그

0개의 댓글