Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Interakcia s databázou PostgreSQL alebo akoukoľvek inou databázou priamo zvyšuje množstvo SQL, ktoré napíšete. To môže spôsobiť problémy so zabezpečením, ako sú útoky SQL injection, a obmedziť prenosnosť vašej databázy. Odporúča sa použiť ORM (Object Relation Mapper), ako je Prisma, ktorý poskytuje vrstvu abstrakcie nad databázou.

Zistite, ako používať Prisma v Next.js na pripojenie a interakciu s databázou PostgreSQL.

Vytvorenie aplikácie Next.js

Pred vytvorením aplikácie Next.js sa uistite, že máte Nainštalovaný uzol a npm vo vašom vývojovom prostredí.

Vytvorte aplikáciu Next.js s názvom prisma-next spustením tohto príkazu vo vašom termináli:

npx create-next-app prisma-next

Tým sa vytvorí nový adresár s názvom prisma-next so základnými súbormi, aby ste mohli začať.

Prejdite do adresára prisma-next a spustite vývojový server pomocou tohto príkazu:

npm spustiť dev
instagram viewer

Tým sa spustí vývojový server na http://localhost: 3000.

Toto sú základné kroky na vytvorenie novej aplikácie Next.js. Viac informácií o funkciách Next.js nájdete v tomto článku o prečo migrovať na Next.js.

Inštalácia klienta Prisma

Ak chcete začať používať Prisma, budete potrebovať balíky prisma a @prisma/client. prisma je nástroj Prisma CLI, zatiaľ čo @prisma/client je automaticky generovaný nástroj na tvorbu dotazov, ktorý vám pomôže vyhľadávať vašu databázu.

Nainštalujte tieto dva balíčky cez npm.

npm nainštalujte prisma @prisma/client

Ďalej inicializujte prisma spustením príkazu npx prisma init na termináli.

npx prisma init

Tým sa vygeneruje nový súbor s názvom schéma.prisma ktorý obsahuje databázovú schému a a .env súbor, do ktorého pridáte adresu URL pripojenia k databáze.

Pridanie adresy URL pripojenia

Na pripojenie prismy k vášmu potrebujete adresu URL pripojenia PostgreSQL databázu. Všeobecný formát adresy URL pripojenia je tento:

postgres://{username}:{password}@{hostname}:{port}/{database-name}

Nahraďte prvky v zložených zátvorkách svojimi vlastnými údajmi o databáze a potom ich uložte do súboru .env:

DATABASE_URL = „váš reťazec pripojenia“

Potom v schema.prisma zadajte adresu URL pripojenia k databáze:

zdroj údajov db {
provider = "PostgreSQL"
url = env("DATABASE_URL")
}

Definovanie schémy databázy

Databázová schéma je štruktúra, ktorá definuje dátový model vašej databázy. Špecifikuje tabuľky, stĺpce a vzťahy medzi tabuľkami v databáze, ako aj všetky obmedzenia a indexy, ktoré by mala databáza používať.

Ak chcete vytvoriť schému pre databázu s tabuľkou užívateľov, otvorte súbor schema.prisma a pridajte užívateľský model.

model Používateľ {
id Reťazec @default (cuid()) @id
meno Reťazec?
e-mailový reťazec @unique
}

Model používateľa má stĺpec id, ktorý je primárnym kľúčom, stĺpec názvu typu string a stĺpec e-mailu, ktorý by mal byť jedinečný.

Po definovaní dátového modelu musíte nasadiť svoju schému do databázy pomocou npx prisma dbTAM príkaz.

npx prisma db push

Tento príkaz vytvorí skutočné tabuľky v databáze.

Použitie Prisma v Next.js

Ak chcete použiť Prisma v Next.js, musíte vytvoriť inštanciu klienta prisma.

Najprv vygenerujte klienta Prisma.

npx prisma generovať

Potom vytvorte nový priečinok s názvom lib a pridajte doň nový súbor s názvom prisma.js. V tomto súbore pridajte nasledujúci kód na vytvorenie inštancie klienta Prisma.

importovať { PrismaClient } od"@prisma/klient";
nech hranol;

ak (Typokno"nedefinované") {
ak (process.env. NODE_ENV "výroba") {
hranol = Nový PrismaClient();
} inak {
ak (!global.prisma) {
global.prisma = Nový PrismaClient();
}

hranol = global.prisma;
}
}

exportpredvolená hranol;

Teraz môžete importovať klienta prisma ako „prisma“ do vašich súborov a začať dopytovať databázu.

Dopytovanie databázy v trase Next.js API

Prisma sa zvyčajne používa na strane servera, kde môže bezpečne interagovať s vašou databázou. V aplikácii Next.js môžete nastaviť smerovanie API, ktoré používa Prisma na načítanie údajov z databázy a ich vrátenie klientovi. Stránky alebo komponenty potom môžu načítať údaje z trasy API pomocou HTTP knižnica ako Axios alebo fetch.

Vytvorte trasu API otvorením priečinka pages/api a vytvorením nového podpriečinka s názvom db. V tomto priečinku vytvorte súbor s názvom createuser.js a pridajte nasledujúcu funkciu obsluhy.

importovať hranol od"@/lib/prisma";

exportpredvolenáasyncfunkciupsovod(req, req) {
konšt { meno, email } = req.query;

skúste {
konšt newUer = čakať hranol. User.create({
údaje: {
názov,
email,
},
});

res.json({ užívateľ: newUer, chyba: nulový });
} chytiť (chyba) {
res.json({ chyba: chybná správa, užívateľ: nulový });
}
}

Táto funkcia získa meno a e-mail z tela požiadavky. Potom v bloku try/catch použije metódu vytvorenia poskytovanú klientom Prisma na vytvorenie nového používateľa. Funkcia vráti objekt JSON obsahujúci používateľa a chybovú správu, ak existuje.

V jednom z vašich komponentov teraz môžete zadať požiadavku na túto trasu API. Na ukážku vytvorte nový priečinok s názvom profile v adresári aplikácie a pridajte nový súbor s názvom page.js. Potom pridajte jednoduchý formulár obsahujúci dve vstupné polia pre meno a e-mail a tlačidlo odoslania.

Do formulára pridajte udalosť pri odoslaní, ktorá volá funkciu s názvom handleSubmit. Formulár by mal vyzerať takto:

"používať klienta";
importovať Reagovať, { useState } od"reagovať";

exportpredvolenáfunkciuStránka() {
konšt [name, setname] = useState("");
konšt [e-mail, setemail] = useState("");

konšt handleSubmit = async (e) => {
e.preventDefault();
};

vrátiť (


typ={text}
zástupný symbol ="Pridať meno"
value={name}
onChange={setname((e) => e.cieľová.hodnota)}
/>

typ={text}
zástupný symbol ="Pridať e-mail"
value={email}
onChange={setemail((e) => e.cieľová.hodnota)}
/>

Vo funkcii handleSubmit použite metódu fetch na vytvorenie požiadavky na cestu /api/db/createuser.

konšt handleSubmit = async (e) => {
e.preventDefault();

konšt užívateľ = čakať priniesť ("/api/db/createuser", {
Druh obsahu: "application/json",
telo: JSON.stringify({ meno, email }),
});
};

Teraz, keď je formulár odoslaný, Prisma vytvorí nový záznam používateľa v tabuľke Používateľ.

Robiť viac s Prismou

Prisma môžete použiť na pripojenie a dopytovanie databázy PostgreSQL z aplikácie Next.js.

Okrem pridávania nových záznamov do databázy môžete spúšťať aj iné príkazy SQL. Môžete napríklad odstrániť riadky, vybrať riadky na základe špecifických podmienok a dokonca aktualizovať existujúce údaje uložené v databáze.