Prisma 및 Railway를 사용하여 mongoDB 데이터베이스 쿼리

이 가이드에서는 Railway를 사용하여 MongoDB 데이터베이스를 배포하고, 데이터베이스에 시드 데이터를 추가하고, 연결 문자열을 통해 데이터베이스에 연결하고, Prisma 클라이언트로 해당 시드 데이터를 쿼리하는 노드 스크립트를 생성합니다.

개요



  • Create Prisma Project
  • Initialize Prisma Schema
  • Prisma Schema


  • Provision a MongoDB Database with Railway
  • Railway Dashboard
  • Railway CLI


  • Connect Railway Database to Prisma Project
  • Set Environment Variable
  • Seed Database
  • Generate Prisma Client


  • Create a Script to Query the Database
  • Run the Script


  • 프리즈마 프로젝트 생성



    빈 새 프로젝트를 만들고 package.json 를 초기화합니다.

    mkdir railway-prisma-mongodb
    cd railway-prisma-mongodb
    yarn init -y
    

    prisma 종속성을 설치합니다.

    yarn add @prisma/client
    yarn add -D prisma
    

    type에서 modulepackage.json로 설정합니다.

    {
      "name": "railway-prisma-mongodb",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "dependencies": {
        "@prisma/client": "^3.10.0"
      },
      "devDependencies": {
        "prisma": "^3.10.0"
      },
      "type": "module"
    }
    


    Prisma 스키마 초기화


    prisma init 기본 Prisma 프로젝트를 스캐폴드합니다.

    yarn prisma init
    


    다른 유일한 필요한 파일은 index.js 입니다. 이것은 Prisma Client를 사용하여 데이터베이스에 대해 테스트 명령을 실행하는 데 사용됩니다.

    touch index.js
    


    이제 우리 프로젝트의 구조는 다음과 같습니다.

    /
    ├── prisma
    │   └── schema.prisma
    ├── .env
    ├── .gitignore
    ├── index.js
    └── package.json
    


    프리즈마 스키마


    Post 파일에 다음을 추가하여 schema.prisma 모델을 정의합니다.

    datasource db {
      provider = "mongodb"
      url      = env("DATABASE_URL")
    }
    
    generator client {
      provider        = "prisma-client-js"
      previewFeatures = ["mongoDb"]
    }
    
    model Post {
      id    String @id @default(auto()) @map("_id") @db.ObjectId
      slug  String @unique
      title String
      body  String
    }
    


    MongoDB 지원을 활성화하려면 previewFeatures 생성기에서 mongoDbclient로 설정해야 합니다.

    철도로 MongoDB 데이터베이스 프로비저닝



    대시보드 또는 CLI를 통해 철도로 MongoDB 데이터베이스를 설정하는 두 가지 방법이 있습니다.

    철도 대시보드



    대시보드를 사용하려면 dev.new을 클릭하고 "Provision MongoDB"를 선택합니다.



    데이터베이스가 설정되면 왼쪽에 있는 "MongoDB"를 클릭하여 자동 생성되는 기본 테스트 데이터베이스를 확인합니다.



    연결 문자열을 찾으려면 "연결"을 선택하십시오.



    철도 CLI



    대시보드 대신 Railway CLI를 사용하려면 먼저 install it 해야 합니다. CLI를 성공적으로 설치했는지 확인하려면 다음 명령을 실행하여 CLI 버전을 확인하십시오.

    railway version
    

    railway login를 실행하여 철도 계정을 인증하십시오. 철도 계정이 없는 경우 계정을 만들라는 메시지가 표시됩니다.

    railway login
    

    railway init 프로젝트를 초기화하고 빈 프로젝트로 시작할지 아니면 스타터 템플릿으로 시작할지 묻습니다. "빈 프로젝트"를 선택하고 프로젝트 이름을 지정합니다.

    railway init
    

    railway add를 실행하고 MongoDB를 선택하여 철도 프로젝트에 MongoDB 플러그인을 추가합니다.

    railway add
    


    Prisma 프로젝트에 철도 데이터베이스 연결



    철도 대시보드로 돌아가 연결 문자열을 찾습니다.

    환경 변수 설정


    .env 파일 안에 DATABASE_URL가 포함되어 있고 Railway에서 제공하는 연결 문자열로 변수를 설정합니다. 포트 번호 뒤에 /test?authSource=admin를 추가하여 연결 문자열 끝에 데이터베이스 이름과 인증 소스를 지정합니다.

    DATABASE_URL="mongodb://mongo:<PASSWORD>@containers-us-west-1.railway.app:6852/test?authSource=admin"
    

    prisma db push 를 사용하여 스키마를 데이터베이스와 동기화하십시오.

    yarn prisma db push
    


    종자 데이터베이스


    mongosh 명령을 사용하여 데이터베이스에 직접 연결할 수도 있습니다.

    mongosh "mongodb://mongo:<PASSWORD>@containers-us-west-1.railway.app:6852"
    


    데이터베이스는 철도 대시보드에서 또는 다음 seed 명령을 사용하여 mongosh를 통해 시드할 수 있습니다.

    db.Post.insertOne(
      {
        slug: "first-post-slug",
        title: "First Post Title",
        body: "First post body."
      }
    )
    


    데이터를 보려면 철도 대시보드의 데이터 탭을 확인하세요.

    Prisma 클라이언트 생성


    prisma generate 명령으로 Prisma 클라이언트를 생성합니다.

    yarn prisma generate
    


    데이터베이스를 쿼리하는 스크립트 만들기



    다음 스크립트를 index.js에 추가하여 데이터베이스에서 데이터를 읽을 수 있는지 테스트합니다. 이 함수는 findMany 컬렉션에서 post 쿼리를 실행하고 컬렉션의 모든 게시물을 반환합니다.

    // index.js
    
    import pkg from '@prisma/client'
    
    const { PrismaClient } = pkg
    const prisma = new PrismaClient()
    
    async function main() {
      await prisma.$connect()
    
      const posts = await prisma.post.findMany()
    
      console.dir(posts, { depth: Infinity })
    }
    
    main()
      .catch(console.error)
      .finally(() => prisma.$disconnect())
    


    스크립트 실행


    node index.js를 실행하여 main 기능을 실행합니다.

    node index.js
    


    올바르게 따라했다면 다음과 같은 결과를 얻어야 합니다.

    [
      {
        id: '61f369df79160504b0ee41d9',
        slug: 'first-post-slug',
        title: 'First Post Title',
        body: 'First post body.'
      }
    ]
    

    좋은 웹페이지 즐겨찾기