因此,我尝试在不使用 API 的情况下将数据直接从 Prisma 获取到 SvelteKit。 我知道这不是您通常会这样做的方式,而且我之前已经“正常”这样做了,但这次我想节省一些时间。
到目前为止我所做的工作,但是我必须重新加载页面才能第一次显示数据,并且在构建和预览它时它不起作用。 有更好的方法吗?
这是我的代码:
<script context="module" lang="ts">
import {PrismaClient, type User} from '@prisma/client'
if (typeof window === "undefined") {
var allUsers: User[] = []
const prisma = new PrismaClient()
async function main() {
allUsers = await prisma.user.findMany()
console.log(allUsers)
}
main()
.catch((e) => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
}
</script>
<div>
{#each allUsers as user}
<p>{user.email}</p>
{/each}
</div>
它无法正常工作,我建议将其移动到该页面的服务器:
+server.page.ts
Prisma 客户端依赖于 Node.js API,这在浏览器环境中不可用。如果你真的不想使用服务器,可能有一些黑客方法可以让它工作。