typescript - Efectuarea unui apel către clientul Prisma din funcția load în Svelte Kit
Folosesc Prisma.io pentru a scrie o bază de date și aș dori să apelez clientul Prisma dintr-o funcție TypeScript.
Am încercat să folosesc funcția load din Svelte kit și, de asemenea, să scriu apelul într-un fișier ascuns _api.ts, dar nu a funcționat. Clientul Prisma se plânge că nu poate fi rulat din browser. Înțeleg că ar trebui să fie cumva rulat doar pe server. Care este modul corect de a folosi Prisma cu Svelte kit și de a rula apelurile pe server?
Răspuns #1
Funcția „load” din Svelte poate rula pe server sau în browser, așa că acesta este probabil motivul erorii.
Îți sugerez să transformi fișierul _api.ts într-un punct final apelabil. Trebuie apoi să te asiguri că api.ts exportă o funcție numită 'get' (sau altă metodă). Mai multe informații aici: https://kit.svelte.dev/docs#routing-endpoints
Odată ce acest lucru este făcut, ar trebui să puteți naviga direct la ruta api și ar trebui să vedeți rezultatul funcției dvs. ‚get’ din fișierul api.ts.
Apoi, în funcția ta „load”, poți folosi metoda „fetch” pentru a accesa acea rută și a prelua datele. În Svelte, metoda fetch funcționează atât pe server, cât și în browser. https://kit.svelte.dev/docs#loading-input-fetch
Actualizare :
Pentru a realiza endpoint-uri de tip 'POST', trebuie să exporți o funcție numită 'post' în fișierul tău de endpoint. Îți sugerez să folosești console.log pentru a vedea ce date primești când endpoint-ul este apelat:
export async function get(request) {
console.log(request);
return {
body: { success: true },
};
}
Răspunsul #2
Poți face o cerere către prisma doar pe server, așa că poți folosi:
+server.page.ts
+server.layout.ts
+hooks.server.ts
api/../+server.ts
