codestates / codestates/Podo

[๐Ÿ‘พ Error] Sever_sequelize ์‚ฌ์šฉ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’์ด Promise { <pending> }์œผ๋กœ ์ถœ๋ ฅ๋จ

Open
#212 0 comments 0 reactions 1 assignee Claimed by @cherishxyun View on GitHub
Error Handling Log
Dominant language
JavaScript
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Description

### **์—๋Ÿฌ๋ฅผ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•˜์„ธ์š”**
๊ฐ™์€ ott ์ข…๋ฅ˜๋กœ ์ด๋ฏธ create๋‚˜ joinํ•œ ํŒŒํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋˜ ๋‹ค์‹œ create๋‚˜ joinํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Edge Case๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

```jsx
// ottParty: ๊ธฐ์กด์˜ ํŒŒํ‹ฐ ์ค‘ create/join ํ•˜๋ ค๋Š” ํŒŒํ‹ฐ์˜ OTT ์ข…๋ฅ˜์™€ ๊ฐ™์€ ํŒŒํ‹ฐ๋ฅผ ๊ฑธ๋Ÿฌ๋‚ธ ๋ฐฐ์—ด
if (ottParty.length !== 0) {
// ottParty ๋ฐฐ์—ด์„ mapํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ด ๊ฐ ๊ฐ™์€ ์ข…๋ฅ˜์˜ OTT๋ฅผ ๊ณต์œ ํ•˜๋Š” ํŒŒํ‹ฐ๋งˆ๋‹ค ํ•ด๋‹น ์œ ์ €๊ฐ€ ๊ฐ€์ž…ํ–ˆ๋Š”์ง€ ํ™•์ธ
const alreadyJoinedArr = ottParty.map((party) => {
const alreadyJoined = db.sequelize.models.User_party.findAll({
where: { party_id: party.dataValues.id, user_id },
}); // ๊ฒฐ๊ณผ๊ฐ’: Promise { }
return alreadyJoined;
}) // ๊ฒฐ๊ณผ๊ฐ’: [ Promise { } ]
);
//ํ•ด๋‹น ์œ ์ €๊ฐ€ ์žˆ๋‹ค๋ฉด 422 ์—๋Ÿฌ
if (alreadyJoinedArr.length !== 0) {
return res
.status(422)
.json({ message: "You already created or joined the same party" });
}
```

### **์—๋Ÿฌ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ๊ฐ€์š”**
sequelize ํŠน์„ฑ์ƒ ๊ฒฐ๊ณผ๊ฐ’์„ Promise๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

### **์—๋Ÿฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‚˜์š”**
`Promise.all( )`์„ ์‚ฌ์šฉํ•ด์„œ mapํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
```jsx
if (ottParty.length !== 0) {
//alreadyJoined๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์€ Promise๋กœ Promise.all์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด alreadyJoinedArr๋Š” Promise ๋ฐฐ์—ด์ด ๋‚˜์˜ค๊ฒŒ ๋จ.
let alreadyJoinedArr = await Promise.all(
ottParty.map((party) => {
const alreadyJoined = db.sequelize.models.User_party.findAll({
where: { party_id: party.dataValues.id, user_id },
});
return alreadyJoined;
})
);
// map๊ณผ Promise.all ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋น„์–ด์žˆ์–ด๋„ 2์ฐจ์›๋ฐฐ์—ด('[[]]')๋กœ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— flat ์‚ฌ์šฉ
alreadyJoinedArr = alreadyJoinedArr.flat();

//ํ•ด๋‹น ์œ ์ €๊ฐ€ ์žˆ๋‹ค๋ฉด 422 ์—๋Ÿฌ
if (alreadyJoinedArr.length !== 0) {
return res.status(422).json({
message:
"You have already created or joined the party that shares the same kind of OTT",
});
}
}
```

### **๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ์™€ ๋„์›€์ด ๋œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”**
[map, reduce ํ•จ์ˆ˜์—์„œ async/await ์“ฐ๊ธฐ](https://velog.io/@minsangk/2019-09-06-0209-์ž‘์„ฑ๋จ-eik06xy8mm)

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.