简体中文
如何将数据库提供商切换为 Prisma Postgres。
prisma+postgres://accelerate.prisma-data.net/?api_key=ey....
DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=ey...."
@repo/database
pnpm remove @neondatabase/serverless @prisma/adapter-neon ws @types/ws
pnpm add @prisma/extension-accelerate
import 'server-only'; import { env } from '@repo/env'; import { withAccelerate } from '@prisma/extension-accelerate'; import { PrismaClient } from '@prisma/client'; export const database = new PrismaClient().$extends(withAccelerate());
swr
ttl
const pages = await prisma.page.findMany({ swr: 60, // 60 秒 ttl: 60 // 60 秒 });
pnpm add @prisma/extension-pulse
PULSE_API_KEY="ey...."
api_key
ey...
env
PULSE_API_KEY
export const server = { // ... PULSE_API_KEY: z.string().min(1).startsWith('ey'), }; export const env = createEnv({ client, server, runtimeEnv: { // ... PULSE_API_KEY: process.env.PULSE_API_KEY, }, });
import 'server-only'; import { withPulse } from '@prisma/extension-pulse'; import { withAccelerate } from '@prisma/extension-accelerate'; import { PrismaClient } from '@prisma/client'; import { env } from '@repo/env'; export const database = new PrismaClient() .$extends(withAccelerate()) .$extends(withPulse({ apiKey: env.PULSE_API_KEY })) ;
const stream = await prisma.page.stream(); console.log(`等待 \`Page\` 表上的事件... `); for await (const event of stream) { console.log('收到事件:', event); }