[๐พ Error] Sever_sequelize ์ฌ์ฉ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ด Promise { <pending> }์ผ๋ก ์ถ๋ ฅ๋จ
- 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.