INTEGRITY Dokumentace

Nastavit a používat databázi Prisma Postgres

Prisma Postgres je spravovaná bezserverová databáze PostgreSQL. Podporuje funkce jako pooling připojení, ukládání do mezipaměti, odběry v reálném čase a doporučení pro optimalizaci dotazů.

V tomto tutoriálu se naučíte, jak:

Předpoklady

Než začnete postupovat podle tohoto průvodce, ověřte, že máte následující:

1. Vytvořte nový projekt Worker

Začněte použitím C3 pro vytvoření projektu Worker v příkazovém řádku:

npm create cloudflare@latest prisma-postgres-worker -- --type=hello-world --ts=true --git=true --deploy=false

Poté přejděte do svého projektu:

cd ./prisma-postgres-worker

Váš počáteční src/index.ts soubor v tuto chvíli obsahuje jednoduchý handler požadavků:

src/index.ts
export default {
	async fetch(request, env, ctx): Promise<Response> {
		return new Response("Hello World!");
	},
} satisfies ExportedHandler<Env>;

2. Nastavte Prisma ve svém projektu

V tomto kroku nastavíte Prisma ORM s databází Prisma Postgres pomocí CLI. Poté vytvoříte a spustíte pomocné skripty pro vytvoření tabulek v databázi a vygenerujete Prisma klienta pro dotazování na ni.

2.1. Nainstalujte požadované závislosti

Nainstalujte Prisma CLI jako vývojovou závislost:

npm i -D prisma

Nainstalujte Klientské rozšíření Prisma Accelerate protože je vyžadován pro Prisma Postgres:

npm i @prisma/extension-accelerate

Nainstalujte dotenv-cli balíček k načtení proměnných prostředí z .dev.vars:

npm i -D dotenv-cli

2.2. Vytvořte databázi Prisma Postgres a inicializujte Prisma

Inicializujte Prisma ve své aplikaci:

npx prisma@latest init --db

Pokud nemáte Prisma Data Platform účet, nebo pokud nejste přihlášeni, příkaz vás vyzve k přihlášení pomocí jednoho z dostupných poskytovatelů ověření. Otevře se okno prohlížeče, kde se můžete přihlásit nebo vytvořit účet. Po dokončení tohoto kroku se vraťte do příkazového řádku.

Jakmile se přihlásíte (nebo pokud jste již přihlášeni), CLI vás vyzve k výběru názvu projektu a regionu databáze.

Jakmile příkaz skončí, vytvoří:

Mějte na paměti, že Cloudflare Workers nepodporuje .env soubory. Použijete soubor s názvem .dev.vars místo .env soubor, který byl právě vytvořen.

2.3. Připravte proměnné prostředí

Přejmenujte .env soubor v kořenovém adresáři aplikace na .dev.vars soubor:

mv .env .dev.vars

2.4. Aplikujte změny schématu databáze

Otevřete schema.prisma soubor v prisma složku a přidejte do ní následující User model do vaší databáze:

prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

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

model User {
  id  Int @id @default(autoincrement())
  email String
	name 	String
}

Dále přidejte následující pomocné skripty do scripts sekci vašeho package.json:

package.json
"scripts": {
  "migrate": "dotenv -e .dev.vars -- npx prisma migrate dev",
	"generate": "dotenv -e .dev.vars -- npx prisma generate --no-engine",
	"studio": "dotenv -e .dev.vars -- npx prisma studio",
  // Additional worker scripts...
}

Spuštěním migračního skriptu použijete změny v databázi:

npm run migrate

Až budete vyzváni, zadejte název migrace (například init).

Po dokončení těchto kroků je Prisma ORM plně nastavena a propojena s databází Prisma Postgres.

3. Vyvíjejte aplikaci

Upravte src/index.ts soubor a nahraďte jeho obsah následujícím kódem:

src/index.ts
import { PrismaClient } from "@prisma/client/edge";
import { withAccelerate } from "@prisma/extension-accelerate";

export interface Env {
	DATABASE_URL: string;
}

export default {
	async fetch(request, env, ctx): Promise<Response> {
		const path = new URL(request.url).pathname;
		if (path === "/favicon.ico")
			return new Response("Resource not found", {
				status: 404,
				headers: {
					"Content-Type": "text/plain",
				},
			});

		const prisma = new PrismaClient({
			datasourceUrl: env.DATABASE_URL,
		}).$extends(withAccelerate());

		const user = await prisma.user.create({
			data: {
				email: `Jon${Math.ceil(Math.random() * 1000)}@gmail.com`,
				name: "Jon Doe",
			},
		});

		const userCount = await prisma.user.count();

		return new Response(`\
Created new user: ${user.name} (${user.email}).
Number of users in the database: ${userCount}.
		`);
	},
} satisfies ExportedHandler<Env>;

Spusťte vývojový server:

npm run dev

Navštivte https://localhost:8787 a ověřte, že vaše aplikace zobrazí následující výstup:

Number of users in the database: 1

Pokaždé, když obnovíte stránku, se vytvoří nový uživatel. Zobrazené číslo se zvýší o 1 při každém obnovení stránky, protože vrací celkový počet uživatelů ve vaší databázi.

4. Nasaďte aplikaci na Cloudflare

Po nasazení aplikace na Cloudflare potřebuje přístup k DATABASE_URL proměnnou prostředí, která je lokálně definována v .dev.vars. Můžete použít npx wrangler secret put příkaz pro nahrání DATABASE_URL pro nasazovací prostředí:

npx wrangler secret put DATABASE_URL

Až budete vyzváni, vložte DATABASE_URL hodnota (z .dev.vars). Pokud jste přihlášeni přes Wrangler CLI, zobrazí se výzva, zda chcete vytvořit nový Worker. Potvrďte volbou "yes":

✔ There doesn't seem to be a Worker called "prisma-postgres-worker". Do you want to create a new Worker with that name and add secrets to it? … yes

Poté spusťte následující příkaz pro nasazení projektu do Cloudflare Workers:

npm run deploy

wrangler CLI zabalí a nahraje vaši aplikaci.

Pokud ještě nejste přihlášeni, wrangler CLI otevře okno prohlížeče a vyzve vás k přihlášení do Cloudflare dashboardu.

Jakmile nasazení dokončíte, ověřte ho návštěvou živé URL adresy uvedené ve výstupu nasazení, například https://{PROJECT_NAME}.workers.dev. Pokud narazíte na potíže, ověřte, že byly secrets přidány správně, a zkontrolujte logy nasazení, zda neobsahují chyby.

Další kroky

Gratulujeme k sestavení a nasazení jednoduché aplikace s Prisma Postgres a Cloudflare Workers!

Chcete-li aplikaci dále vylepšit:

Chcete-li se dozvědět, jak vytvořit aplikaci v reálném čase pomocí Cloudflare Workers a Prisma Postgres, přečtěte si toto návod.