Supabase에 무료 PostgreSQL 데이터베이스를 설치하여Prisma와 함께 사용

Supabase는 개원 기술 위에 세워진 백엔드 즉 서비스이다.데이터베이스, 인증, REST API, 실시간 구독 및 저장을 제공합니다.
그것은 위탁 관리된 PostgreSQL 데이터베이스를 포함하는 무료 계획을 제공했다.만약 네가 새로운 프로젝트를 막 시작한다면, 이것은 매우 유용할 것이다.
이 설명서는 Supabase에서 제공하는 Postgres 데이터베이스를 Prisma 프로젝트에 빠르게 연결하는 방법에 대해 설명합니다.그리고 다른 일부 서비스는 위탁 관리된PostgreSQL 데이터베이스를 제공한다. 예를 들어 orDigital Ocean.
Prismaopen source 차세대 ORM이다.다음과 같이 구성됩니다.

  • Prisma 클라이언트: 노드의 보안 쿼리 생성기를 자동으로 생성하고 입력합니다.js&TypeScript.

  • Prisma Migrate: 시스템을 마이그레이션합니다.

  • Prisma Studio: 데이터베이스의 데이터를 보고 편집하는 데 사용되는 GUI입니다.
  • 1단계: Supabase에 로그인


    브라우저를 https://app.supabase.io/api/login로 이동하여 GitHub을 사용하여 로그인합니다.

    2단계: 새 프로젝트 만들기


    로그인할 때 사용하는 GitHub 사용자 이름을 사용하여 조직을 생성한 것입니다.
    '새 항목' 을 누르면 새 항목을 만들고 조직을 선택하십시오.

    그리고 데이터베이스에 이름과 비밀번호를 제공해야 합니다. (우리가 잠시 후에 필요로 합니다.)마지막으로 "새 프로젝트 만들기"를 누르십시오.

    프로젝트를 작성한 후 데이터베이스 작성을 완료하려면 약 2분 정도 기다려야 합니다.

    단계 3: 항목 설정에서 연결 문자열 가져오기


    사이드바에서 설정 페이지로 이동한 다음 데이터베이스 탭으로 이동합니다.프로젝트를 만들 때 사용할 암호를 포함하는 데이터베이스 연결 문자열을 찾을 것입니다.

    4단계: 연결 테스트


    모든 것이 정상적인지 확인하기 위해 Prisma 프로젝트에서 문자열 연결을 시도해 보겠습니다.
    이미 하나가 있다면 DATABASE_URL 파일의 연결 문자열 (비밀번호 포함) 으로 설정하면 됩니다.
    Prisma 프로젝트가 없거나 Prisma와 처음 합작한 경우 quickstart 안내서의 환매 협의를 사용할 것입니다.

    클론 초보자 프로젝트


    Windows 시스템의 경우 선택한 디렉토리로 이동하여 터미널에서 다음 명령을 실행합니다.
    curl https://pris.ly/quickstart -L -o quickstart-master.tar.gz && tar -zxvf quickstart-master.tar.gz quickstart-master/typescript/starter && move quickstart-master\typescript\starter starter && rmdir /S /Q quickstart-master && del /Q quickstart-master.tar.gz
    
    Mac OS 또는 Linux를 사용하는 경우 다음 명령을 실행합니다.
    curl -L https://pris.ly/quickstart | tar -xz --strip=2 quickstart-master/typescript/starter
    
    이제 종속 항목을 항목의 디렉토리로 이동할 수 있습니다.
    cd starter && npm install
    

    이 프로젝트의 구조를 봐라


    이 항목은 TypeScript를 구성하고 다음 구조를 갖습니다.
  • 디렉토리
  • 파일.env: SQLite 데이터베이스입니다.
  • 파일prisma: 우리는 그 중에서 서로 다른 데이터베이스 모델과 그들 간의 관계를 정의한다.
  • 파일: Prisma가 사용할 dev.db 변수를 포함합니다.
  • 파일schema.prisma: Prisma 클라이언트를 사용하여 검색을 실행할 것입니다.
  • 이 starter에는 다음 패키지도 설치되어 있습니다.

  • .env : 데이터에 따라 맞춤형 자동 생성과 유형 보안 조회 생성기.

  • DATABASE_URL : Prisma 명령줄 인터페이스(CLI)이것은 새로운 프로젝트 자산을 초기화하고 Prisma 클라이언트를 생성하며 기존의 데이터베이스 구조를 자성하여 분석하여 자동으로 응용 프로그램 모델을 만들 수 있도록 합니다.
  • Note: Prisma works with both JavaScript and TypeScript. However, to get the best possible development experience, using TypeScript is highly recommended.


    PostgreSQL을 사용하도록 프로젝트 구성


    PostgreSQL로 전환할 것이기 때문에 script.ts 파일을 계속 삭제합니다.
    다음에 @prisma/client 파일에서 prisma 변수의 값을 단계 3에서 얻은 연결 문자열로 업데이트합니다.URL은 다음과 같습니다.
    # prisma/.env
    
    postgres://postgres:[YOUR-PASSWORD]@db.vdbnhqozmlzdsaejdxwr.supabase.co:5432/postgres
    
    
    마지막으로 prisma/dev.db 파일에서 prisma/.env를'sqlite'에서 DATABASE_URL로 변경합니다.
    다음은 schema.prisma 파일의 모양입니다.
    datasource db {
      provider = "postgresql"
      url      = env("DATABASE_URL")
    }
    
    generator client {
      provider = "prisma-client-js"
    }
    
    model Post {
      id        Int     @id @default(autoincrement())
      title     String
      content   String?
      published Boolean @default(false)
      author    User?   @relation(fields: [authorId], references: [id])
      authorId  Int?
    }
    
    model User {
      id    Int     @id @default(autoincrement())
      email String  @unique
      name  String?
      posts Post[]
    }
    
    모든 작업이 제대로 작동하는지 확인하려면 다음 명령을 실행하여 마이그레이션을 만듭니다.
    prisma migrate dev --name init
    
    변경 사항에 따라 마이그레이션 이름을 선택할 수 있습니다.이 프로젝트의 첫 번째 이전이기 때문에 provider 로고를 'init' 로 설정합니다.
    만일 모든 것이 정상이라면 터미널에서 다음과 같은 메시지를 받을 것입니다.
    Your database is now in sync with your schema.
    
    ✔ Generated Prisma Client (2.x.x) to ./node_modules/@prisma/client in 111ms
    
    이것은 "postgresql" 디렉터리에 schema.prisma 폴더를 만들고 Prisma 모드와 데이터베이스 모드를 동기화합니다.

    Note: if you want to skip the process of creating a migration history, you can use the db push command instead of migrate dev.


    Supabase 항목으로 이동하면, 테이블 편집기에서 두 개의 테이블, 한 개의 --name 테이블과 한 개의 prisma/migrations 테이블이 만들어진 것을 볼 수 있습니다.

    이렇게!Prisma 프로젝트를 Supabase에 있는 PostgreSQL 데이터베이스에 성공적으로 연결하고 첫 번째 마이그레이션을 실행했습니다.

    Supabase에 대한 연결 풀


    AWS Lambda, Vercel 또는 Netlify 함수에 호스팅된 Node.js 함수와 같은 서버 없이 작업하는 경우에는 connection pooling 도구 설정PgBouncer을 사용해야 합니다.함수가 호출될 때마다 new connection to the database 오류가 발생할 수 있기 때문이다.
    다행히도 Supabase 항목support connection management using PgBouncer과 이 기본적으로 활성화됩니다.
    사이드바에서 데이터베이스 페이지로 이동한 다음 연결 탱크 설정으로 이동합니다

    마이그레이션을 실행하려면 4단계에서 사용한 URL과 같이 풀 이외의 연결 URL을 사용해야 합니다.그러나 응용 프로그램을 배포할 때는 풀 연결 URL을 사용합니다.PostgreSQL 연결 URL에 prisma 플래그를 추가합니다.URL은 다음과 같습니다.
    # prisma/.env
    
    postgres://postgres:[YOUR-PASSWORD]@db.vdbnhqozmlzdsaejdxwr.supabase.co:6543/postgres?pgbouncer=true
    
    
    Prisma Migrate는 데이터베이스 트랜잭션을 사용하여 데이터베이스 및 마이그레이션 테이블의 현재 상태를 확인합니다.그러나 마이그레이션 엔진은 데이터베이스에 단일 연결을 사용하도록 설계되어 PgBouncer를 사용하는 연결 탱크를 지원하지 않습니다.PgBouncer를 사용하여 풀을 연결하는 모든 환경에서 Prisma Migrate 명령을 실행하려고 하면 다음 오류가 발생할 수 있습니다.
    Error: undefined: Database error
    Error querying the database: db error: ERROR: prepared statement "s0" already exists
    
    이것은 이미 알고 있는 문제로 연구 중이므로 당신은 이 방면의 진전GitHub issue에 주목할 수 있습니다.
    Prisma에 대해 더 많은 정보를 알고 싶으면 docs를 보십시오.또한 문제가 있거나 문제가 발생하면 언제든지 환매협정discussions section에서 토론을 시작하십시오.

    좋은 웹페이지 즐겨찾기