侧边栏壁纸
博主头像
顾小诺 博主等级

行动起来,活在当下

  • 累计撰写 30 篇文章
  • 累计创建 14 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

prisma学习指南-2(增删改查)

顾小诺
2025-08-09 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

一、普通增删改查

前端代码

"use client"
export default function Home() {

  // 通过 API 路由进行数据库操作
  const addUser = async () => {
    const res = await fetch("/api/user", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        action: "add",
        data: {
          name: "新用户",
          email: "newuser@example.com",
          password: "123456",
          role: "ADMIN"
        }
      })
    });
    const result = await res.json();
    console.log("新增用户:", result);
  };

  const deleteUser = async () => {
    const res = await fetch("/api/user", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        action: "delete",
        id: 1
      })
    });
    const result = await res.json();
    console.log("删除用户:", result);
  };

  const updateUser = async () => {
    const res = await fetch("/api/user", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        action: "update",
        id: 1,
        data: {
          name: "修改后的用户"
        }
      })
    });
    const result = await res.json();
    console.log("修改用户:", result);
  };

  const queryUser = async () => {
    const res = await fetch("/api/user", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        action: "query",
        id: 1
      })
    });
    const result = await res.json();
    console.log("查询用户:", result);
  };

  return (
    <>
      <button onClick={addUser}>增加用户</button> <br />
      <button onClick={deleteUser}>删除用户</button><br />
      <button onClick={updateUser}>修改用户</button><br />
      <button onClick={queryUser}>查询用户</button>
    </>
  );
}

后端代码(基于 Node.js)

import { NextResponse } from "next/server";
import db from "@/app/lib/db";

export async function POST(request: Request) {
  const body = await request.json();
  const { action, id, data } = body;
  let result;
  try {
    if (action === "add") {
      result = await db.user.create({ data });
    } else if (action === "delete") {
      result = await db.user.delete({ where: { id } });
    } else if (action === "update") {
      result = await db.user.update({ where: { id }, data });
    } else if (action === "query") {
      result = await db.user.findFirst({ where: { id } });
    } else {
      return NextResponse.json({ error: "未知操作" }, { status: 400 });
    }
    return NextResponse.json({ result });
  } catch (e) {
    return NextResponse.json({ error: (e instanceof Error ? e.message : String(e)) }, { status: 500 });
  }
}

二、 事务

// 批量创建用户事务
async function createManyUsers(users: any[]) {
  return await db.$transaction(
    users.map((userData) => db.user.create({ data: userData }))
  );
}

// 或者
// 批量创建用户事务
async function createManyUsers(users: any[]) {
  const queries = [];
  for (const userData of users) {
    queries.push(db.user.create({ data: userData }));
  }
  return await db.$transaction(queries);
}

注意:此处循环创建仅为举例

小结

操作

Prisma API

示例说明

创建

prisma.model.create

新建一条记录

查询单条

prisma.model.findUnique / findFirst

根据条件查询单条数据

查询多条

prisma.model.findMany

查询多条记录

更新

prisma.model.update

更新符合条件的单条数据

删除

prisma.model.delete

删除符合条件的单条数据

0

评论区