Next.JS - Prisma 오류를 처리하기 위한 작은 데코레이터(Higher Order Function)

prisma 클라이언트에서 예외를 처리하는 일반적인 방법을 찾을 수 없어서 매우 놀랐습니다. 그래서 나만의 데코레이터를 작성했습니다.
나는 이제 막 Next.js를 배우기 시작했기 때문에 내 접근 방식이 매우 순진할 수 있습니다. 여기에서 개선 사항이 보이면 알려주세요.
dev 이외의 다른 환경에 대한 오류 세부 정보를 숨깁니다.

import { NextApiRequest, NextApiResponse } from "next";
import { isDevEnv } from "./common";
import { Prisma } from "@prisma/client";

export function withPrismaError(request: (req: NextApiRequest, res: NextApiResponse) => unknown) {
  return async function (req: NextApiRequest, res: NextApiResponse) {
    try {
      await request(req, res);
    } catch (e) {
      if (e instanceof Prisma.PrismaClientKnownRequestError) {
        const errorResponse = {
          error: isDevEnv ? `${e.code} ${e.message}` : "prisma_error",
        };

        return res.status(503).json(errorResponse);
      }

      return res.status(503).json({ error: true });
    }
  };
}



사용법:

export default withPrismaError(
  async function handler(req: NextApiRequest, res: NextApiResponse) {
    const { email, password, url } = req.body;

    await registerUser(email, password, url);
    res.status(200).json({ success: true });
  }
);


추신. ...그리고 "안녕하세요 여러분", 분명히 오늘 저는 "잠복자"에서 블로거로 전환되었습니다!

좋은 웹페이지 즐겨찾기