是的,你可以使用 Bun 来运行 Prisma 的初始化程序以及其他 Prisma CLI 命令。由于 Bun 可以替代 npm 和 yarn,所以你可以使用 Bun 的 bun 命令来执行这些任务。
下面是如何使用 Bun 运行 Prisma 的初始化程序和其他命令的步骤。
1. 安装 Bun 和 Prisma
首先,确保你已经安装了 Bun。可以按照官方网站上的说明进行安装:
curl -fsSL https://bun.sh/install | bash然后,创建一个新的项目并安装 Prisma:
mkdir elysia-app
cd elysia-app
bun init
bun add prisma @prisma/client2. 初始化 Prisma
使用 Bun 运行 Prisma 初始化命令:
bun prisma init这将在你的项目中创建一个 prisma 目录,包含 schema.prisma 文件。我们将编辑这个文件来定义数据模型。
3. 定义 Prisma 数据模型
打开 prisma/schema.prisma 文件,并添加以下内容来定义 User 和 Post 模型:
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String
author User @relation(fields: [authorId], references: [id])
authorId Int
}我们使用 SQLite 作为示例数据库,你可以根据需要切换到其他数据库(例如 PostgreSQL、MySQL 等)。
4. 迁移数据库
使用 Bun 运行 Prisma 迁移命令来生成数据库并创建表:
bun prisma migrate dev --name init5. 生成 Prisma 客户端
Prisma 客户端将自动生成,但你可以手动生成它以确保它是最新的:
bun prisma generate6. 更新项目结构和代码
确保项目结构如下:
elysia-app/
├── prisma/
│ └── schema.prisma
├── src/
│ ├── index.ts
│ ├── routes/
│ │ ├── users.ts
│ │ ├── posts.ts
│ └── models/
│ ├── user.ts
│ └── post.ts
├── package.json
└── tsconfig.json
更新用户路由 src/routes/users.ts
import { Router } from "elysia";
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
export const userRouter = new Router()
.get("/", async (req, res) => {
const users = await prisma.user.findMany({
include: { posts: true },
});
res.json(users);
})
.get("/:id", async (req, res) => {
const user = await prisma.user.findUnique({
where: { id: parseInt(req.params.id) },
include: { posts: true },
});
if (user) {
res.json(user);
} else {
res.status(404).send("User not found");
}
})
.post("/", async (req, res) => {
const newUser = await prisma.user.create({
data: req.body,
});
res.status(201).json(newUser);
});更新帖子路由 src/routes/posts.ts
import { Router } from "elysia";
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
export const postRouter = new Router()
.get("/", async (req, res) => {
const posts = await prisma.post.findMany({
include: { author: true },
});
res.json(posts);
})
.get("/:id", async (req, res) => {
const post = await prisma.post.findUnique({
where: { id: parseInt(req.params.id) },
include: { author: true },
});
if (post) {
res.json(post);
} else {
res.status(404).send("Post not found");
}
})
.post("/", async (req, res) => {
const newPost = await prisma.post.create({
data: req.body,
});
res.status(201).json(newPost);
});主文件 src/index.ts
import { Elysia } from "elysia";
import { userRouter } from "./routes/users";
import { postRouter } from "./routes/posts";
const app = new Elysia()
.use("/users", userRouter)
.use("/posts", postRouter);
app.listen(3000, () => {
console.log("Server is running on http://localhost:3000");
});运行项目
使用以下命令运行项目:
bun run src/index.ts总结
通过使用 Bun 运行 Prisma 的初始化程序和其他命令,你可以简化项目的依赖管理和任务执行。在这个示例中,我们展示了如何定义 Prisma 数据模型、迁移数据库、生成 Prisma 客户端,并在 Elysia 框架中使用这些功能来构建一个复杂的后端应用。这样,你可以利用 Prisma 的强大功能和 Bun 的高性能来构建高效的 TypeScript 应用。