TIL 28일차 (20240201)

박세연·2024년 2월 1일

TIL

목록 보기
23/70


2024년이 시작한지 벌써 한달이 지났다. 시간이 빨리 지나가는 만큼 내 지식도 빠르게 확장되었으면 좋겠다.

🤯 오늘 마주한 에러들

🥔로그인, 정보 조회 시 req.user을 못 불러 오는 문제


(로그인) 오른쪽의 쿠키로 불러올 때는 잘 작동하는 코드가 좌측에서 session으로 불러올 때 userId를 못가져온다고 에러가 뜬다.
(정보 조회) 첫 줄 const {userId} = req.user;을 못 찾는다고 에러가 뜬다.

  • 🍎 해결 방법

    yarn add express-mysql-session

express-session만 깔았던 것이 문제였다. 또한

import expressSession from 'express-session';
import expressMySQLSession from 'express-mysql-session';

aap.js에 위의 두 패키지를 불러오고

const MySQLStore = expressMySQLSession(expressSession);
const sessionStore = new MySQLStore({
  user: process.env.DATABASE_USERNAME,
  password: process.env.DATABASE_PASSWORD,
  host: process.env.DATABASE_HOST,
  port: process.env.DATABASE_PORT,
  database: process.env.DATABASE_NAME,
  expiration: 1000 * 60 * 60 *24, //1일
  createDatabaseTable: true //테이블이 없으면 자동적으로 생성
})

app.use(
  expressSession({
    secret: process.env.SESSION_SECRET_KEY,
    resave: false,
    saveUninitialized: false,
    cookie:{
      maxAge: 1000 * 60 * 60 * 12, //12시간동안 쿠키를 사용할 수 있도록 설정
    },
    store: sessionStore
  })
);

코드를 추가한 후 라우터를 불러오니 로그인은 잘 되었다.

그리고 정보 조회는 auth.middleware.js를 작성하고 get과정 중에서 authMiddleware을 추가했더니 장문의 에러가 있었냐는 듯 잘 작동했다.

↑ 에러 사진

(얄밉게 잘 작동해주는 인섬니아)


🥔 이력서 작성 중에 작성자 이름을 작성하지 않았다고 에러가 뜹니다


↓ 그리고 문제의 코드

  • 🍎 해결 방법
    ↓ 해결한 코드 (그냥 유저 아이디 받아온 것처럼 이름도 받아왔다;;)

그리고 역시 잘 작동해주는 인섬니아


🥔 수정 기능이 안돼요 (userId가 resume 테이블 접근할 때 활용할 수 없어요)


위의 사진은 참고했던 유저 정보 수정 API. 마찬가지로 이력서 수정에 사용하려고 했으나

resumeId가 필요하다고 떴다.

  • 🍎 해결 방법
    튜터님께 질문드린 결과 resume에는 굳이 transaction을 안해도 되니(지엽적) 삭제 먼저 했고, 그 다음 resume의 resumeId가 필요한 것이니(1:N의 관계이므로 그 resume만 수정해야하던 것) req.params로 resumeId를 받아와서 그것으로 where을 하면 되는 것이었다.
    아래는 해결한 코드

➕ 여기에서 본인 확인까지 추가하면 될것같다. (다른 것이 급해서 지금은 넘어가려고 한다...)


🥔 API가 안된대요 😭

  • 🍎 해결 방법

    delete 앞에 /를 빼먹었다 ㅋ...
    오타 좀 그만....
profile
배워나가는 중

0개의 댓글