Skip to content

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字段里面里面重复的值
  • 返回结果

要是密码一样 就返回一条