ํฐ์คํ ๋ฆฌ ๋ทฐ
์ผ๋ฐ์ ์ธ ๋น๋๊ธฐ ํจ์ ์ฒ๋ฆฌ์์ API ์์ฒญ์ ํ๋ฉด await๊ฐ ์๋ ์๋ ๋ชจ๋ ์์ฒญ์ผ๋ก ๋ฐ์๋ค์ฌ์ง๋ค.
await๊ฐ ์๋ ๋น๋๊ธฐ ํจ์ ์์ฒญ ๋ก์ง์ ์ฝ์์ ์ฐ์ผ๋ฉด Promise{<pending>} ์ผ๋ก ๋์ค๋ฉฐ
๊ฐ์ฒด ๋ด๋ถ์๋ 'fulfilled'๋ก ๋ฐ์ดํฐ ํ์นญ์ด ์งํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํน์ ๋ชฐ๋ผ ๋ฐ์ดํฐ ๋งํฌ ๋ถ๋ถ์ ์คํ๋ฅผ ๋ด์ด ์ผ๋ถ๋ฌ ์ค๋ฅ๋ฅผ ๋ด์๋๋ ์ฝ์์ ์ค๋ฅ๊ฐ ์ฐํ๋ฉฐ ์ ์คํ๋์๋ค.
let query = supabase.from(HOTPLACE).select('*');
if (area) query.eq('area', area);
console.log('query', query);
const getHotplaces = async () => {
// let query = await supabase.from(HOTPLACE).select('*');
const { data, error } = await query;
if (error) {
throw new Error(error.message);
}
return data;
};
async - await๋ฅผ ์ ์ฉํ query์ ๊ฐ์ ์ฝ์์ ์ ์ฐํ๋ค.
ํ์ง๋ง ์์ ๋ก์ง์ฒ๋ผ supabase์ API ์์ฒญ์ await ์์ด ๋ณด๋์ ๋์๋ Promise๊ฐ ์๋ ์์ฒญ ๊ฐ์ฒด ์์ฒด๊ฐ ์ฝ์์ ์ฐํ๋ค.
์ ๊ทธ๋ด๊น?
supabase์์๋ await ์์ด ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฒ ๋๋ฉด ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ ๋ง๊ฒ ๋์ด์๋ค๊ณ ํ๋ค.
Supabase์ API ๋ฉ์๋(.select(), .insert(), .update() ๋ฑ)๋ ๋น๋๊ธฐ ํจ์์ด๋ค.
์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ๋ฐํํ์ง ์๊ณ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ await ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ query๋ฅผ ์ฝ์์ ์ฐ์ผ๋ฉด
Promise๋ ์์ง ์๋ฃ๋์ง ์์์ผ๋ฏ๋ก Promise ๊ฐ์ฒด(์์ฒญ ์์ฒด)๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
async - await๋ฅผ ์ฌ์ฉํ๋ฉด promise๋ฅผ ๋ฒ๊ฒจ๋ด์ด ๋ฐ์ดํฐ ์์ฒด๋ฅผ ํ์ธํ ์ ์๋ค.
'Forntend > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [NewsFeed-Day 5] data ํํฐ๋งํ๊ธฐ(๊ฒ์์ด ๋ฐ ์นดํ ๊ณ ๋ฆฌ) (0) | 2025.02.17 |
|---|---|
| [NewsFeed-Day 4] Modal ์ฐ๊ฒฐ (0) | 2025.02.15 |
| [NewsFeed-Day 3] supabase ๋ฐ์ดํฐ ๋๊ธฐํ (1) | 2025.02.15 |
| [NewsFeed-Day 2] supabase ๊ฐ ์ก๊ธฐ (0) | 2025.02.14 |
| ๊ตฌ์กฐ๋ถํดํ ๋น (Context ์ฌ์ฉ ์์) (0) | 2025.02.10 |