有没有办法在sveltekit加载函数中运行 prisma?
Is there a way to run prisma in the sveltekit load function?
我有一个正在开发的 sveltekit 应用程序,它包括 Prisma,
我一直在尝试通过 __layout 的加载函数将一个帖子数组传递到我的所有路由。
当我加载网站
时出现此错误
这是我的代码
<!-- src/routes/__layout.svelte -->
<script context=module>
export const ssr = true;
import Prisma from '$lib/db';
// code breaks past this import, nothing runs, cant even test the code below
import { browser } from '$app/env';
export async function load() {
let posts;
let db = new Prisma();
if(!browser) {
posts = await db.post.findMany({
select: {
id: true,
title: true,
body: true,
authorId: true,
author: true,
}
})
await db.$disconnect();
} else {
posts = [
{
id: 0,
title: 'An error ocurred',
body: '',
authorId: 0,
author: {}
}
]
}
return {
stuff: {
posts
}
}
}
</script>
// src/lib/db.ts
import Prisma, * as PrismaAll from "@prisma/client";
const PrismaClient = Prisma?.PrismaClient || PrismaAll?.PrismaClient;
const prisma = new PrimsaClient();
export default prisma;
如果我做错了什么请告诉我。
使用 hooks.ts 作为解决方法。
import db from "$lib/db"
/** @type {import('@sveltejs/kit').GetSession} */
export async function getSession() {
let posts = await db.post.findMany({
select: {
id: true,
title: true,
body: true,
authorId: true,
author: true,
}
})
db.$disconnect();
return {
posts
}
}
我的加载函数如下所示
<script context=module>
export async function load({ session }) {
return {
stuff: {
...session
}
}
}
</script>
我有一个正在开发的 sveltekit 应用程序,它包括 Prisma,
我一直在尝试通过 __layout 的加载函数将一个帖子数组传递到我的所有路由。
当我加载网站
这是我的代码
<!-- src/routes/__layout.svelte -->
<script context=module>
export const ssr = true;
import Prisma from '$lib/db';
// code breaks past this import, nothing runs, cant even test the code below
import { browser } from '$app/env';
export async function load() {
let posts;
let db = new Prisma();
if(!browser) {
posts = await db.post.findMany({
select: {
id: true,
title: true,
body: true,
authorId: true,
author: true,
}
})
await db.$disconnect();
} else {
posts = [
{
id: 0,
title: 'An error ocurred',
body: '',
authorId: 0,
author: {}
}
]
}
return {
stuff: {
posts
}
}
}
</script>
// src/lib/db.ts
import Prisma, * as PrismaAll from "@prisma/client";
const PrismaClient = Prisma?.PrismaClient || PrismaAll?.PrismaClient;
const prisma = new PrimsaClient();
export default prisma;
如果我做错了什么请告诉我。
使用 hooks.ts 作为解决方法。
import db from "$lib/db"
/** @type {import('@sveltejs/kit').GetSession} */
export async function getSession() {
let posts = await db.post.findMany({
select: {
id: true,
title: true,
body: true,
authorId: true,
author: true,
}
})
db.$disconnect();
return {
posts
}
}
我的加载函数如下所示
<script context=module>
export async function load({ session }) {
return {
stuff: {
...session
}
}
}
</script>