codestates / codestates/EmotiPop

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

Open
#114 0 comments 0 reactions 0 assignees View on GitHub
back-end error-handling
Dominant language
JavaScript
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Description

### **어떤 에러인가요?**

- 데이터베이스 테이블 간 참조로 인한 추가 불가 에러
- 비슷한 에러 핸들링 로그 : https://github.com/codestates/EmotiPop/issues/48

### **에러 메시지**

![image](https://user-images.githubusercontent.com/73332608/145591390-11ca70e4-9a61-42cb-94db-b45d68af4182.png)

### **에러 핸들링 방법**

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

```jsx
// 원래 코드
... 생략
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' });
},
};
```

```jsx
// 수정된 코드
... 생략
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' });
},
};
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.