Prisma + Postgres
在本教程中,我们将探索如何设置 Prisma + Postgres。我们将使用涉及书籍和作者的真实示例。
Prisma + Postgres 的先决条件
在开始之前,请确保您已安装以下内容:
- Node.js(v14 或更高版本)
- npm或yarn
- Supabase上的帐户
设置 Prisma + Postgres
Supabase提供可与 Prisma 配合使用的托管 Postgres 数据库,让您无需搭建自己的数据库服务器即可轻松上手。Supabase 上手快捷,如果您的项目获得成功,它还能以经济高效的方式扩展到数百万用户。
- 创建新的 Supabase 项目
- 登录您的Supabase 帐户。
- 点击“新建项目”。
- 填写项目详细信息,然后单击“创建新项目”。
-
检索数据库连接详细信息
- 在导航栏中,转到“项目设置” > “数据库”。
-
复制Postgres 的连接字符串(URI)。下一步你需要它:
postgres://postgres.[ref]:[password]@[region].pooler.supabase.com:6543/postgres
在你的项目中设置 Prisma
Prisma 是一个 ORM,可简化 Node.js 应用程序中的数据库交互。
-
初始化 Node.js 项目
mkdir prisma-postgres cd prisma-postgres npm init -y
-
安装 Prisma 和 Postgres 客户端
npm install prisma --save-dev npm install @prisma/client
-
初始化 Prisma
npx prisma init
此命令创建一个
prisma
包含一个schema.prisma
文件和一个.env
文件的目录。
配置 Prisma + Postgres
-
设置数据库连接
- 打开
.env
文件(位于新prisma
文件夹中)。 -
添加
DATABASE_URL
后您可以在此处DIRECT_URL
获取连接详细信息:DATABASE_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true" DIRECT_URL="postgres://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres"
- 打开
直接连接(需要在端口 5432 上运行数据库迁移)。
-
定义数据模型
- 打开
prisma/schema.prisma
。 -
更新
datasource
块以包含 DIRECT_URL,如下所示:datasource db { provider = "postgresql" url = env("DATABASE_URL") directUrl = env("DIRECT_URL") }
添加数据模型。对于图书馆系统:
``` model Author { id Int @id @default(autoincrement()) name String books Book[] } model Book { id Int @id @default(autoincrement()) title String author Author @relation(fields: [authorId], references: [id]) authorId Int } ```
- 打开
生成 Postgres 模式
使用 Prisma Migrate 将您的模式应用到 Supabase 上的 Postgres 数据库。
npx prisma migrate dev --name init
此命令将:
- 生成迁移文件。
- 将迁移应用到 Postgres 数据库。
- 生成 Prisma 客户端。
使用 Prisma 客户端与 Prisma + Postgres 进行交互
创建一个script.js
文件来测试数据库操作。
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function main() {
// Create a new author
const author = await prisma.author.create({
data: {
name: 'Yevgeny Zamyatin',
},
});
// Create a new book
const book = await prisma.book.create({
data: {
title: 'We',
authorId: author.id,
},
});
// Retrieve all books with their authors
const books = await prisma.book.findMany({
include: { author: true },
});
console.log(books);
}
main()
.catch((e) => console.error(e))
.finally(async () => {
await prisma.$disconnect();
});
运行脚本:
node script.js
您应该会看到登录到控制台的一系列书籍及其相关作者。
结论
恭喜!您已成功设置 Prisma 与 Postgres 的集成。此设置允许您使用 Prisma 与 Postgres 数据库无缝交互。
通过遵循本指南,您已经迈出了使用 Prisma 和 Postgres 构建强大应用程序的第一步。
文章来源:https://dev.to/awalias/prisma-postgres-4o09