sql >> Databáze >  >> RDS >> Database

Jak používat Prisma

Prisma je zajímavý ORM.

ORM je abstraktní vrstva nad databází.

V posledních měsících jsem měl tu čest používat Prisma v několika různých projektech a zde vám chci ukázat, jak snadné je začít (a pokračovat).

Budu používat Prisma v aplikaci React založené na Next.js.

Můžete vytvořit jednu novou aplikaci Next.js ve složce pomocí

npx create-next-app

První věc, kterou musíte pro přidání Prisma udělat, je zahrnout prisma ve vašich závislostech vývoje:

npm install -D prisma

Nyní máte přístup k nástroji Prisma CLI pomocí npx . Zkuste spustit:

npx prisma

a uvidíte pokyny, jak jej používat.

Nyní spusťte toto a nastavte Prisma pro váš projekt:

npx prisma init

Tím se vytvoří prisma a uvnitř ní schema.prisma soubor:

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

Také vytvořil .env s DATABASE_URL, pokud jste jej ještě neměli proměnná prostředí:

DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"

Toto musí ukazovat na vaši databázi.

Nejprve odveďte tento bod z cesty. Prisma podporuje mnoho různých druhů (relačních) databází. Použil jsem to s PostgreSQL a SQLite, ale podporuje také MySQL, AWS Aurora, MariaDB.

Ve výrobě rád používám spravovanou databázi DigitalOcean (zde povinný odkaz na doporučení pro kredit 100 $ zdarma), ale pro rychlý příklad aplikace je Railway.app skvělá a bezplatná volba.

Po registraci můžete zřídit databázi PostgreSQL kliknutím:

a ihned poté získáte adresu URL připojení:

Zkopírujte to do svého .env soubor jako DATABASE_URL hodnotu.

Nyní je čas přidat do schématu model, který bude převeden do databázové tabulky.

Všimněte si, že můžete také udělat opak, pokud máte databázi již naplněnou tabulkami, spuštěním npx prisma introspect . Prisma vygeneruje schéma z databáze.

Řekněme, že jsme luxusní miliardář, který rád sbírá auta. Vytvoříme Car model pro uložení seznamu vozů, které chceme koupit:

model Car {
  id Int @id @default(autoincrement())
  brand String
  model String
  created_at DateTime @default(now())
  bought Boolean @default(false)
}

Vřele doporučuji, abyste si vše vyhledali v referenční dokumentaci schématu Prisma.

Tento model definuje 5 polí:id , brand , model , created_at , bought , každý svým typem, ať už je to Int, String, DataTime nebo Boolean.

id@id atribut, což znamená, že se jedná o primární klíč , který říká systému správy databáze, aby byl jedinečný. A jako výchozí je nastavena hodnota, která se automaticky zvyšuje, takže kdykoli přidáme jednu novou položku, bude mít vždy jedinečné celé číslo, které se zvýší:1, 2, 3, 4…

Všimněte si, že můžete také použít jedinečnou hodnotu s @default(cuid()) nebo @default(uuid()) .

created_at výchozí je aktuální datum a čas s @default(now()) a bought výchozí je false .

Nyní musíme synchronizovat databázi s naším schématem. To provedeme spuštěním příkazu npx prisma migrate vytvořit naši první migraci :

npx prisma migrate dev

Nyní můžete v databázi vidět, že tam bude Car tabulka:

a soubor ve vaší kódové základně v prisma/migrations složku s příkazy použitými k vytvoření těchto tabulek, v tomto případě:

-- CreateTable
CREATE TABLE "Car" (
    "id" SERIAL NOT NULL,
    "brand" TEXT,
    "model" TEXT,
    "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "bought" BOOLEAN NOT NULL DEFAULT false,

    PRIMARY KEY ("id")
);

Kdykoli změníte schéma, musíte spustit tento npx prisma migrate dev příkaz k použití změn.

Skvělý! Nyní můžeme pomocí Prismy vkládat data do databáze, získávat data, mazat data... a tak dále.

Nyní nainstalujte @prisma/client balíček s

npm install @prisma/client

Vytvořte lib složku a v ní prisma.js soubor. Tam inicializujeme objekt PrismaClient:

import { PrismaClient } from '@prisma/client'

let global = {}

const prisma = global.prisma || new PrismaClient()

if (process.env.NODE_ENV === 'development') global.prisma = prisma

export default prisma

Tento kus kódu je potřeba k tomu, abychom se vyhnuli nadměrným konkretizacím Prismy, když spouštíme vývojový režim, s častým obnovováním kvůli horkému znovu načítání modulu. V podstatě přidáváme prisma při prvním spuštění na globální proměnnou a příště tuto proměnnou znovu použijeme.

Nyní můžete v libovolném souboru, který chcete použít Prisma, přidat

import prisma from 'lib/prisma'

a jste připraveni vyrazit.

Chcete-li získat všechna auta, použijte prisma.car.findMany() :

const cars = await prisma.car.findMany()

Můžete předat objekt pro filtrování dat, například výběrem všech Ford auta:

const cars = await prisma.car.findMany({
  where: {
    brand: 'Ford',
  },
})

Jedno auto můžete vyhledat podle jeho id hodnotu pomocí prisma.car.findUnique() :

const car = await prisma.car.findUnique({
  where: {
    id: 1,
  },
})

Nové auto můžete přidat pomocí prisma.car.create() :

const car = await prisma.car.create({
  brand: 'Ford',
  model: 'Fiesta',
})

Auto můžete smazat pomocí prisma.car.delete() :

await prisma.job.delete({
  where: { id: 1 },
})

Data auta můžete aktualizovat pomocí prisma.car.update() :

await prisma.job.delete({
  where: { id: 1 },
  data: {
    bought: true
  }
})

Můžete toho udělat mnohem víc, ale to jsou základy, vše, co potřebujete, abyste mohli začít, a 95 % toho, co potřebujete, v jednoduché aplikaci CRUD.


  1. ~/.psqlrc soubor pro DBA

  2. Jak vytvořit uživatele pro db v postgresql?

  3. Mýty o výkonu:Zkrácení nelze vrátit zpět

  4. Změna tabulky migrace místnosti nepřidává nový sloupec a migrace je volána znovu a znovu