Prisma 的 relation 不是摆设。
它的价值在于:你可以顺着关系去查,而不是自己手搓一堆 join 心智。
#1. 读取文章,并带出作者
const posts = await prisma.post.findMany({
where: { published: true },
select: {
id: true,
title: true,
author: {
select: {
id: true,
email: true,
name: true,
},
},
},
});#2. 按关联对象过滤
const posts = await prisma.post.findMany({
where: {
author: {
email: { contains: "city.dev" },
},
},
});#3. connect:把现有档案挂接起来
await prisma.post.create({
data: {
title: "被挂到现有作者名下的文章",
author: {
connect: { email: "lin@city.dev" },
},
},
});#4. disconnect:解除挂接
await prisma.post.update({
where: { id: 1 },
data: {
author: {
disconnect: true,
},
},
});你会发现 Prisma 的 relation 心智很像“中介手续”:
create = 新建档案
connect = 挂到已有档案上
disconnect= 解除关系
include = 查主档时顺便带副档