Prisma 条件查询
select 查询
返回你想要的字段
- 代码
ts
const user = await prisma.user.findMany({
where: {
name: "Bob2",
},
select: {
name: true,
id: true,
},
});
console.log(user);
- 返回值
bash
[ { name: 'Bob2', id: 18 } ]
include 查询
返回的结果中包含哪些关系,前提是 schema 中写了外键
- 查询所有员工,并且包含部门名称
ts
const result = await prisma.emp.findMany({
include: {
dept: {
select: {
name: true,
},
},
},
});
- 返回结果
bash
{
id: 16,
name: '宋远桥',
age: 40,
job: '销售',
salary: 4600,
entrydate: 2004-10-12T00:00:00.000Z,
managerid: 14,
dept_id: 4,
dept: { name: '销售部' }
},
omit
返回的对象中排除哪些字段
- 代码
ts
const result = await prisma.emp.findMany({
omit: {
job: true,
},
});
- 返回结果(里面没有了 job)
bash
{
id: 17,
name: '陈友谅',
age: 42,
salary: 2000,
entrydate: 2011-10-12T00:00:00.000Z,
managerid: 1,
dept_id: null
}
where
定义一个或多个 filters,可用于过滤记录属性(如用户的电子邮件地址)或相关记录属性
- 代码
ts
const user = await prisma.user.findMany({
where: {
name: "Bob2",
},
select: {
name: true,
id: true,
},
});
console.log(user);
- 返回值
bash
[ { name: 'Bob2', id: 18 } ]
orderBy
对结果进行排序 desc 降序, asc 升序
- 代码
ts
const result = await prisma.emp.findMany({
orderBy: {
salary: "desc",
},
});
- 返回结果
注意
如果要是有 null
降序: null 在最后
升序: null 在最前
distinct
去重
- 代码
ts
const user = await prisma.user.findMany({
distinct: ["password"],
select: {
name: true,
id: true,
},
});
console.log(user); // 去掉password字段里面里面重复的值
- 返回结果
要是密码一样 就返回一条