codestates/EmotiPop

[✏️ Error-Handling] Sequelize Foreign key 관련 에러_2

Opened this issue · 0 comments

어떤 에러인가요?

  • 데이터베이스 테이블 간 참조로 인한 추가 불가 에러
  • 비슷한 에러 핸들링 로그 : #48

에러 메시지

image

에러 핸들링 방법

server/controller/beans/new.js 에서 콘솔을 찍어보니 accessToken.id 부분이 Users 테이블에 나오는 해당 사용자의 id와는 다르게 나와서 '콩주머니 작성'에서 데이터베이스에 데이터가 들어가지 않았다.
따라서 코드를 다음과 같이 수정했다.

// 원래 코드
... 생략
const findUser = await Users.findOne({
      attributes: { exclude: ['password'] },
      where: {
        email: accessTokenData.email,
      },
    });

const { emotions, emotion_level, contents, gourdkinds } = req.body;
    // console.log(data);
    const data = {
      emotions,
      emotion_level,
      contents,
      gourdKinds: gourdkinds,
      users_id: accessTokenData.id,
    };

    await Beans.create({ ...data });

    const newContent = await Beans.findOne({
      where: { emotions, emotion_level, contents, gourdKinds: gourdkinds, users_id: accessTokenData.id },
    });

    res.send({ data: newContent.dataValues, message: 'ok' });
  },
};
// 수정된 코드
... 생략
const findUser = await Users.findOne({
      attributes: { exclude: ['password'] },
      where: {
        email: accessTokenData.email,
      },
    });

const { emotions, emotion_level, contents, gourdkinds } = req.body;
    // console.log(data);
    const data = {
      emotions,
      emotion_level,
      contents,
      gourdKinds: gourdkinds,
      users_id: findUser.dataValues.id,
    };

    await Beans.create({ ...data });

    const newContent = await Beans.findOne({
      where: { emotions, emotion_level, contents, gourdKinds: gourdkinds, users_id: findUser.dataValues.id },
    });
    // console.log(newContent);
    res.send({ data: newContent.dataValues, message: 'ok' });
  },
};