πŸ“ Next.js Fetch 의 Params 둜 Prisma 데이터 μ ‘κ·Ό λΆ„κΈ°μ²˜λ¦¬ ( κ°œμΈν”„λ‘œμ νŠΈ )

10_2pangΒ·2023λ…„ 8μ›” 20일
0

βš½οΈνŠΈλŸ¬λΈ”μŠˆνŒ…

λͺ©λ‘ 보기
87/94
post-thumbnail

πŸ‘¨β€πŸ’»Β μ‚¬κ±΄


MySQL 데이터λ₯Ό Prisma 둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ ν•˜κ³ , ν•΄λ‹Ή Prisma 에 접근을 ν•˜μ˜€λ‹€.
μ ‘κ·ΌκΉŒμ§€λŠ” μ„±κ³΅μ μ΄μ˜€λ‹€. κ·Έν›„, λ‚˜λŠ” 컬럼λͺ…을 λˆ„λ₯΄λ©΄ ν•΄λ‹Ή 컬럼λͺ…μ˜ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κ³ μ‹Άμ—ˆλ‹€.

κ·ΈλŸ¬λ‚˜, κ³΅μ‹λ¬Έμ„œμ—μ„œμ˜ Fetch 의 μ˜΅μ…˜μ€ λ°μ΄ν„°μΊμ‹œμ²˜λ¦¬ λΆ€λΆ„λ§κ³ λŠ” 주어진것이 μ—†μ—ˆλ‹€.

μ—¬κΈ°μ„œ λ‚΄κ°€ 처음 μ‹œλ„ν•΄λ³Έκ²ƒμ€ Fetch 의 url 에 query 문을 μΆ”κ°€ν•˜μ—¬ μž‘μ„±ν•œ 것이닀.

const fetchData = await fetch('/api/player?column=CA&order=desc');

κ·Έν›„, next 12 λ²„μ „μ—μ„œ 썼던 handler λ°©μ‹μ²˜λŸΌ req의 쿼리λ₯Ό λ“€κ³ μ˜€λ €κ³  ν•˜μ˜€λ‹€.

if (req.query.column === 'CA' && req.query.order === 'desc') {
  const users = await client.playerInfo.findMany({
    take: 20,
    orderBy: {
      CA: 'desc',
    },
  });

  return NextResponse.json(users);
}

λ μ€„μ•Œμ•˜μœΌλ‚˜, λ³΄κΈ°μ’‹κ²Œ μ•ˆλ˜λŠ”κ²ƒμ„ ν™•μΈν•˜μ˜€λ‹€.

βœ…Β ν•΄κ²°


❗️ URL method μ‚¬μš©

ꡬ글링을 톡해 μ•Œκ²Œλœ 방법이닀.

req의 url 을 new URL 둜 κ°μ²΄λ³€ν™˜ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방식이닀.

export async function GET(req: NextApiRequest, res: NextApiResponse) {
  // req.url이 undefined일 수 있기 λ•Œλ¬Έμ— 
  if (!req.url) {
    return res.status(400).send('URL not provided');
  }
  const baseUrl = `http://${req.headers.host}`;

  // 객체 λ³€ν™˜
  const url = new URL(req.url, baseUrl);
  // column의 값을 λ°›μ•„μ˜΄
  const column = url.searchParams.get('column');
  // order의 값을 λ°›μ•„μ˜΄
  const order = url.searchParams.get('order');

πŸ’­Β κ°œμ„ 


  • 컬럼λͺ…에 λ§žλŠ” λΆ„κΈ°μ²˜λ¦¬λ₯Ό 더 μΆ”κ°€ν•  μ˜ˆμ •μ΄λ‹€.
profile
μ£Όλ‹ˆμ–΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자 이광렬 μž…λ‹ˆλ‹€ 🌸

0개의 λŒ“κΈ€