spring的技术笔记
学习数据层Prisma第 15 / 23 篇1 分钟阅读

CRUD 与关系

CRUD 与关系

这节要解决什么

会用 Prisma 做增删改查,并理解「按 userId 过滤」为什么重要。

先用大白话

CRUD = Create / Read / Update / Delete。

有了用户之后,书签表不能只存标题和链接,还要存 属于谁(userId)。
查询列表时带上「当前登录用户 id」,更新/删除前先确认「这条是不是他的」。

这是实战里最基本的数据权限,比先上复杂 RBAC 更重要。

对着项目看

在 bookmarks.service.ts 一类文件中,典型写法:

// 列表:只看自己的
prisma.bookmark.findMany({ where: { userId } })
 
// 创建:带上主人
prisma.bookmark.create({
  data: { title, url, userId },
})
 
// 更新前先找:id + userId 都匹配才行
prisma.bookmark.findFirst({ where: { id, userId } })

如果只按 id 删、不校验 userId,用户 A 猜到 id 就可能删掉用户 B 的数据 —— 这是真实漏洞。

关系怎么读

model User {
  bookmarks Bookmark[]
}
 
model Bookmark {
  user   User @relation(fields: [userId], references: [id])
  userId Int
}

意思是:书签属于用户;用户拥有很多书签。

动手

  1. npm run start:dev 保持运行
  2. 注册两个用户,各建几条书签
  3. 用 npx prisma studio 打开,看 userId 是否不同
  4. 确认用户 A 的 token 列不出用户 B 的书签

验收清单

  • 能写出(或读懂)findMany / create / update / delete
  • 明白所有书签操作都要带着 userId 条件
  • 会用 Prisma Studio 检查数据

下一节 → 练习与验收.md